mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(TWLCaptureSystemWriter)ARM9.TWL/data 以下にtad,nandfirmを置くとオブジェクトファイル化して取り込む機能を追加。警告が出ていたので修正。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2734 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
5a4d921ab4
commit
d109de03fd
@ -32,7 +32,9 @@ extern "C" {
|
||||
|
||||
enum {
|
||||
AUTO_PROCESS_MENU_FORMAT = 0,
|
||||
#ifndef TWL_CAPTURE_VERSION
|
||||
AUTO_PROCESS_MENU_HARDWARE_INFO,
|
||||
#endif // TWL_CAPTURE_VERSION
|
||||
#ifdef USE_WRITE_VARIOUS_DATA
|
||||
AUTO_PROCESS_MENU_VARIOUS_DATA,
|
||||
#endif // USE_WRITE_VARIOUS_DATA
|
||||
|
||||
@ -100,13 +100,13 @@ TwlMain()
|
||||
|
||||
// initialize file-system
|
||||
FS_Init(FS_DMA_NOT_USE);
|
||||
|
||||
// SDカードの挿抜イベント監視コールバック設定
|
||||
// FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
|
||||
|
||||
// FS_Initの後の方が良い模様
|
||||
InitAllocation();
|
||||
|
||||
|
||||
// 表示関連初期化
|
||||
InitGraphics();
|
||||
kamiFontInit();
|
||||
@ -118,7 +118,7 @@ TwlMain()
|
||||
SDK_ASSERT(p_table != NULL);
|
||||
(void)FS_LoadTable(p_table, need_size);
|
||||
}
|
||||
|
||||
|
||||
// 初期シーケンス設定
|
||||
sProcess = TopmenuProcess0;
|
||||
|
||||
@ -140,7 +140,10 @@ TwlMain()
|
||||
// NAMライブラリ初期化
|
||||
NAM_Init( OS_AllocFromMain, OS_FreeToMain);
|
||||
NAMUT_Init( OS_AllocFromMain, OS_FreeToMain);
|
||||
|
||||
|
||||
#ifdef TWL_CAPTURE_VERSION
|
||||
kamiFontPrintfConsoleEx(CONSOLE_RED, "[No Signature MODE]\n" );
|
||||
#else
|
||||
// HWInfo関連の前準備
|
||||
switch (HWI_Init( OS_AllocFromMain, OS_FreeToMain ))
|
||||
{
|
||||
@ -157,7 +160,7 @@ TwlMain()
|
||||
kamiFontPrintfConsoleEx(CONSOLE_RED, "[No Signature MODE]\n" );
|
||||
break;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
while (1)
|
||||
{
|
||||
|
||||
@ -30,6 +30,12 @@
|
||||
#include "cursor.h"
|
||||
#include "keypad.h"
|
||||
|
||||
#ifdef TWL_CAPTURE_VERSION
|
||||
// TWLCAPTURE<52>¶ŽY<C5BD>H’ö<E28099>‘‚«<E2809A>ž‚Ý—p
|
||||
#include "process_nandfirm_twlc.h"
|
||||
#include "process_import_twlc.h"
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
型定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
@ -83,8 +89,8 @@ void* AutoProcess0(void)
|
||||
}
|
||||
|
||||
// メニュー初期化
|
||||
sMenuSelectNo = 0;
|
||||
|
||||
// sMenuSelectNo = 0; for twlcapturedebug
|
||||
sMenuSelectNo = AUTO_PROCESS_MENU_IMPORT_TAD;
|
||||
// カーソル消去
|
||||
SetCursorPos((u16)200, (u16)200);
|
||||
|
||||
@ -108,19 +114,30 @@ void* AutoProcess1(void)
|
||||
case AUTO_PROCESS_MENU_FORMAT:
|
||||
return FormatProcess0;
|
||||
|
||||
#ifndef TWL_CAPTURE_VERSION
|
||||
case AUTO_PROCESS_MENU_HARDWARE_INFO:
|
||||
return HWInfoProcess0;
|
||||
#endif // TWL_CAPTURE_VERSION
|
||||
|
||||
#ifdef USE_WRITE_VARIOUS_DATA
|
||||
case AUTO_PROCESS_MENU_VARIOUS_DATA:
|
||||
return WriteDataProcess0;
|
||||
#endif // USE_WRITE_VARIOUS_DATA
|
||||
|
||||
|
||||
#ifdef TWL_CAPTURE_VERSION
|
||||
case AUTO_PROCESS_MENU_IMPORT_TAD:
|
||||
return ImportProcessTWLC0;
|
||||
|
||||
case AUTO_PROCESS_MENU_IMPORT_NANDFIRM:
|
||||
return NandfirmProcessTWLC0;
|
||||
#else
|
||||
case AUTO_PROCESS_MENU_IMPORT_TAD:
|
||||
return ImportProcess0;
|
||||
|
||||
case AUTO_PROCESS_MENU_IMPORT_NANDFIRM:
|
||||
return NandfirmProcess0;
|
||||
#endif // TWL_CAPTURE_VERSION
|
||||
|
||||
case AUTO_PROCESS_MENU_MCU:
|
||||
return mcuProcess0;
|
||||
@ -170,7 +187,9 @@ void* AutoProcess2(void)
|
||||
|
||||
// メニュー一覧
|
||||
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " FORMAT NAND ");
|
||||
#ifndef TWL_CAPTURE_VERSION
|
||||
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " WRITE HARDWARE INFO ");
|
||||
#endif
|
||||
#ifdef USE_WRITE_VARIOUS_DATA
|
||||
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " WRITE VARIOUS DATA ");
|
||||
#endif // USE_WRITE_VARIOUS_DATA
|
||||
|
||||
@ -217,13 +217,14 @@ void* TopmenuProcess1(void)
|
||||
|
||||
void* TopmenuProcess2(void)
|
||||
{
|
||||
|
||||
#ifndef TWL_CAPTURE_VERSION
|
||||
switch ( sMenuSelectNo )
|
||||
{
|
||||
case MENU_FORMAT:
|
||||
FADE_OUT_RETURN( FormatProcess0 );
|
||||
case MENU_HARDWARE_INFO:
|
||||
FADE_OUT_RETURN( HWInfoProcess0 );
|
||||
|
||||
#ifdef USE_WIRELESS_FORCE_DISABLE_SETTING
|
||||
case MENU_WIRELESS_SETTING:
|
||||
FADE_OUT_RETURN( WirelessSettingProcess0 );
|
||||
@ -245,7 +246,7 @@ void* TopmenuProcess2(void)
|
||||
FADE_OUT_RETURN( mcuProcess0 );
|
||||
#endif // NAND_INITIALIZER_LIMITED_MODE
|
||||
}
|
||||
|
||||
#endif // TWL_CAPTURE_VERSION
|
||||
return TopmenuProcess1;
|
||||
}
|
||||
|
||||
|
||||
@ -100,12 +100,10 @@ void* NandfirmProcessTWLC1(void)
|
||||
static BOOL writebackFirm( void )
|
||||
{
|
||||
u8 *pBuf;
|
||||
u8 *pVerifyBuf;
|
||||
u32 allocSize;
|
||||
u32 fileSize = (u32)(&nandfirm_end) - (u32)(&nandfirm_begin);
|
||||
u32 nandfirmSize = fileSize - NANDFIRM_FILE_START_OFFSET;
|
||||
u32 writeBlock;
|
||||
u16 crc1,crc2;
|
||||
BOOL ret = TRUE;
|
||||
|
||||
if( 800*1024 < fileSize )
|
||||
|
||||
@ -13,8 +13,28 @@ NandInitializer
|
||||
|
||||
##つかいかた
|
||||
|
||||
1. ARM9.TWL/data/dev,prod以下に書き込むtadファイルとnandfirmを入れる
|
||||
(既にオブジェクトファイル化したものがあるならそれでもOK、
|
||||
ただし、[gamecode].beginと[gamecode].endを
|
||||
開始、終了位置シンボルとして埋め込んでいないと駄目)
|
||||
2. ./make.rb [dev または prod または full]
|
||||
1. 以下の配置で書き込みたいtadファイルとnandfirmを入れる
|
||||
|
||||
-ARM9.TWL---include
|
||||
|-src
|
||||
--data---dev---HNAA.tad(開発ビルド用tad)
|
||||
| |-HNBA.tad
|
||||
| |-HNCA.tad
|
||||
| |-HNHA.tad
|
||||
| |-HNLA.tad
|
||||
| --nandfirm.nand
|
||||
|
|
||||
--prod---HNAA.tad(量産用ビルドtad,要mastering,cls)
|
||||
|-HNBA.tad
|
||||
|-HNCA.tad
|
||||
|-HNHA.tad
|
||||
|-HNLA.tad
|
||||
--nandfirm.nand
|
||||
|
||||
2. ./make.rb [dev/prod/full]
|
||||
|
||||
|
||||
・もし該当するtad/nandファイルが無ければ既に配置してある.oファイルを利用する。
|
||||
|
||||
|
||||
※あとでちゃんとしたMakefileを書く予定
|
||||
|
||||
159
build/systemMenu_tools/TWLCaptureSystemWriter/make.rb
Executable file
159
build/systemMenu_tools/TWLCaptureSystemWriter/make.rb
Executable file
@ -0,0 +1,159 @@
|
||||
#!ruby
|
||||
# build TwlIPL Root -> build nandfirm -> convert nandfirm ->
|
||||
# build systemlogreader -> build gcdfirm
|
||||
# 実行時引数に"dev"を渡すと開発ビルド(default)、"prod"を渡すと量産ビルドを生成
|
||||
|
||||
# mastering.TWL.exeにパスが通っている環境
|
||||
#MASTERING = "mastering"
|
||||
# mastering.TWL.exeにパスが通っていない環境
|
||||
MASTERING = ENV['TWL_IPL_RED_PRIVATE_ROOT'] + "/tools/bin/mastering.TWL.exe -i " +
|
||||
ENV['TWL_IPL_RED_PRIVATE_ROOT'] + "/tools/bin/mastering.TWL.ini -s -t"
|
||||
|
||||
BIN2OBJ = ENV['TWLSDK_ROOT'] + '/tools/bin/bin2obj.TWL.exe'
|
||||
TARGET_BIN = "TWLCaptureSystemWriter"
|
||||
INCLUDE_FILE = ['HNAA', 'HNBA', 'HNCA', 'HNHA', 'HNLA', 'nandfirm']
|
||||
ROOT_DIR = ENV['TWL_IPL_RED_ROOT'] + "/build/systemMenu_tools/#{TARGET_BIN}"
|
||||
def putex(str)
|
||||
# puts command and execute
|
||||
puts 'execute : ' + str
|
||||
system str
|
||||
end
|
||||
|
||||
def namesafix(basename)
|
||||
if basename == 'nandfirm'
|
||||
return 'nand'
|
||||
else
|
||||
return 'tad'
|
||||
end
|
||||
end
|
||||
|
||||
# .tad/.nandを探す
|
||||
def checkOriginalFile(basename)
|
||||
return Dir.entries(".").include?("#{basename}.#{namesafix(basename)}")
|
||||
end
|
||||
|
||||
def checkObjectFile(basename)
|
||||
return Dir.entries(".").include?("#{basename}.o")
|
||||
end
|
||||
|
||||
def convertToObj(basename)
|
||||
putex("#{BIN2OBJ} -b #{basename.downcase}_begin -e #{basename.downcase}_end #{basename}.#{namesafix(basename)} #{basename}.o")
|
||||
end
|
||||
|
||||
def build_TWLIPLTree(prodopt)
|
||||
Dir.chdir(ENV['TWL_IPL_RED_ROOT']) do
|
||||
putex "make -f Makefile.full clean; " +
|
||||
"makesp CYGPATH_NOCMD=TRUE -j 2 -f Makefile.full TWL_FINALROM=TRUE #{prodopt}"
|
||||
end
|
||||
end
|
||||
|
||||
def build_target(buildtype, prodopt)
|
||||
# build target
|
||||
putex "makesp CYGPATH_NOCMD=TRUE -j 2 clean; makesp CYGPATH_NOCMD=TRUE -j 2 TWL_FINALROM=TRUE #{prodopt}"
|
||||
Dir.chdir(ROOT_DIR + "/ARM9.TWL/bin/ARM9-TS.LTD.thumb/Rom") do
|
||||
if buildtype == "dev"
|
||||
putex "cp ./#{TARGET_BIN}.srl $TWL_IPL_RED_ROOT/build/gcdfirm/memory-launcher-writer/"
|
||||
else
|
||||
# 量産用の場合はsrlにマスタリングをかける
|
||||
putex "#{MASTERING} #{TARGET_BIN}.srl #{TARGET_BIN}.srl.master -s -t"
|
||||
putex "cp ./#{TARGET_BIN}.srl.master $TWL_IPL_RED_ROOT/build/gcdfirm/memory-launcher-writer/#{TARGET_BIN}.srl"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def build_nandfirm(prodopt)
|
||||
|
||||
kDir.chdir(ENV['TWL_IPL_RED_ROOT'] + "/build/nandfirm/menu-launcher") do
|
||||
putex "make clean; make TWL_FINALROM=TRUE #{prodopt}"
|
||||
nandfirm = Dir.glob("menu_launcher*#{buildtype}.nand")
|
||||
if nandfirm.none?
|
||||
puts "build nandfirm failed."
|
||||
exit
|
||||
else
|
||||
nandfirm = nandfirm[0]
|
||||
end
|
||||
putex "$TWLSDK_ROOT/tools/bin/bin2obj.TWL.exe #{nandfirm} nandfirm.#{buildtype}.o " +
|
||||
"-b nandfirm_begin -e nandfirm_end"
|
||||
putex "cp nandfirm.#{buildtype}.o #{ROOT_DIR}/ARM9.TWL/nandfirm/"
|
||||
end
|
||||
end
|
||||
|
||||
def build_includeFile(buildtype)
|
||||
Dir.chdir(ROOT_DIR + "/ARM9.TWL/data/#{buildtype}") do
|
||||
INCLUDE_FILE.each do |f|
|
||||
if checkOriginalFile f
|
||||
convertToObj f
|
||||
elsif checkObjectFile f
|
||||
puts "WARNING(#{f}): original file notfound. using object file in existence."
|
||||
else
|
||||
puts "ERROR(#{f}): both tad/nand file and object file is not found."
|
||||
exit
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def mainproc(buildtype, shortbuild)
|
||||
prodopt = buildtype == "dev"? "FIRM_USE_PRODUCT_KEYS=" : "FIRM_USE_PRODUCT_KEYS=TRUE"
|
||||
puts "buildtype : #{buildtype}"
|
||||
puts "**shortbuild**" if shortbuild
|
||||
|
||||
# build TwlIPL Root
|
||||
unless shortbuild
|
||||
build_TWLIPLTree(prodopt)
|
||||
end
|
||||
|
||||
build_includeFile buildtype
|
||||
build_target buildtype, prodopt
|
||||
build_gcdfirm(buildtype, prodopt)
|
||||
|
||||
end
|
||||
|
||||
|
||||
def build_gcdfirm(buildtype, prodopt)
|
||||
|
||||
# build memory_launcher
|
||||
Dir.chdir(ENV['TWL_IPL_RED_ROOT'] + "/build/nandfirm/memory-launcher") do
|
||||
putex "make clean; make TWL_FINALROM=TRUE #{prodopt}"
|
||||
end
|
||||
|
||||
# build memorylauncherwriter
|
||||
Dir.chdir(ENV['TWL_IPL_RED_ROOT'] + "/build/gcdfirm/memory-launcher-writer") do
|
||||
putex "make clean; make TWL_FINALROM=TRUE APPEND_SRL=#{TARGET_BIN}.srl #{prodopt} "
|
||||
putex "cp ./memory_launcher_writer-FINALROM.gcd " +
|
||||
"$TWL_IPL_RED_ROOT/build/systemMenu_tools/#{TARGET_BIN}/memory_launcher_writer-FINALROM.#{buildtype}.gcd -f"
|
||||
end
|
||||
end
|
||||
|
||||
#=== main ===
|
||||
|
||||
|
||||
shortbuild = false
|
||||
|
||||
# default buildtype = dev
|
||||
if ARGV.none? || ARGV.include?('dev')
|
||||
build = ["dev"]
|
||||
elsif ARGV.include?("prod")
|
||||
build = ["prod"]
|
||||
elsif ARGV.include? "full"
|
||||
build = ["dev", "prod"]
|
||||
else
|
||||
puts "invalid arguments."
|
||||
exit
|
||||
end
|
||||
|
||||
if ARGV.include? "short"
|
||||
# build=fullでshortbuildは無効
|
||||
if ARGV.include? "full"
|
||||
puts 'build "full" needs to re-build TWLIPL tree.'
|
||||
exit
|
||||
else
|
||||
shortbuild = true
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
build.each do |b|
|
||||
mainproc(b,shortbuild)
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user