(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:
aoki_ryoma 2009-01-19 08:50:18 +00:00
parent 5a4d921ab4
commit d109de03fd
7 changed files with 217 additions and 15 deletions

View File

@ -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

View File

@ -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)
{

View File

@ -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

View File

@ -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;
}

View File

@ -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 )

View File

@ -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を書く予定

View 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