Professional Documents
Culture Documents
Android1
Android
Mail:booklinbook@hotmail.com
TEL :13167032980
web
http://source.android.com/
http://source.android.com/source/download.html
http://www.hiapk.com/bbs/
http://www.ubuntu.com/
https://www.codeaurora.org/wiki/QAEP
1.Ubuntu linux
2.Apple Mac
3.windowsCygwin
ubuntu
ubuntu
http://www.ubuntu.com/desktop/getubuntu/download
ubuntuiso
usb
1.
2.update
3. oracle
vm virtualboxwinxp
flash
http://www.virtualbox.org/wiki/Linux_Downloads
iptux wine~~
ubuntu
android
1.
$ sudo apt-get install git-core gnupg sun-java6-jdk flex bison
gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential
zip curl libncurses5-dev zlib1g-dev
sun-java6-jdk.
java6
$ sudo add-apt-repository "deb http://archive.canonical.com/
lucid partner"
$ sudo apt-get update
sun-java5-jdk
1./etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ jaunty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jaunty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jaunty-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jaunty-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jaunty main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jaunty-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jaunty-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jaunty-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse
java5
sudo apt-get update
sudo apt-get install sun-java5-jdk.
javajavac
sunjdk jdk
update-alternatives --config java
java- 1.6.0-sun
2 java ( /usr/bin/java)
-----------------------------------------------------------------------------------------*0
/usr/lib/jvm/java-6-openjdk/jre/bin/java 1061
1
/usr/lib/jvm/java-1.6.0-sun/jre/bin/java 53
2
/usr/lib/jvm/java-6-openjdk/jre/bin/java 1061
[*]1
java
java -version
java version "1.6.0_22
Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0_22-b03)
Java HotSpot(TM) Client VM (build 1.6.0_22-b03, mixed mode, sharing)
update-alternatives --config
javac javacversion
java
andriodsun java5.
androidjava6
android build/core/main.mk
sun
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1\.6[\. "$$]')
ifeq ($(strip $(java_version)),)
$(info ************************************************************)
$(info You are attempting to build with the incorrect version)
$(info of java.)
$(info $(space))
$(info Your version is: $(shell java -version 2>&1 | head -n 1).)
$(info The correct version is: 1.6.)
$(info $(space))
$(info Please follow the machine setup instructions at)
$(info $(space)$(space)$(space)$(space)http://source.android.com/download)
$(info ************************************************************)
$(error stop)
endif
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1\.6[\. "$$]')
ifeq ($(strip $(javac_version)),)
$(info ************************************************************)
$(info You are attempting to build with the incorrect version)
$(info of javac.)
$(info $(space))
$(info Your version is: $(shell javac -version 2>&1 | head -n 1).)
$(info The correct version is: 1.6.)
$(info $(space))
$(info Please follow the machine setup instructions at)
$(info $(space)$(space)$(space)$(space)http://source.android.com/download)
$(info ************************************************************)
$(error stop)
Endif
android
java6 sun-java6-jdkjava5
sun-java5-jdk
main.mkandroidjava
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1\.5[\. "$$]')
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1\.5[\. "$$]')
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1\.6[\. "$$]')
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1\.6[\. "$$]')
2.
sudo apt-get install valgrind
repo
$ cd ~
$ mkdir bin
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
~/bin/ PATH
android
myandroid
$ cd myandroid
$repo init -u git://android.git.kernel.org/platform/manifest.git
$repo sync
okppt
linux
ppt
android
Android2
qualcomm msm7627
Mail:booklinbook@hotmail.com
TEL :13167032980
Agenda
MSM7627
Android
Amss
Arm11
Arm9
Msm7627 chip
ARM9
modem
~~~
ARM11
android
--android
--AMSS
dsp
msm7627
arm9,arm11amss(modem)android
arm11android
1.
https://www.codeaurora.org/wiki/QAEP
platform
Branch
()
Tag
2.eclair M76XXTSNCJNLYA5210.xml
android
$ repo init -u git://codeaurora.org/platform/manifest.git -b eclair -m
M76XXTSNCJNLYA5210.xml
$ repo sync
3.qualcomm
patch
5210patchHY11-VU969-3_5.2.10
qcom-proprietaryandroid
vendor
Cd /bin
Sudo rm sh
Sudo ln s bash sh //sh
4.
out/target/product/msm7627_surf
img
(1)bootloader
(2)appsboot.mbn
(3)appsboothd.mbn
(4)boot.img
(5)recover.img
(6)system.img
Android4
1. https://www.codeaurora.org/wiki/QAEP
2.
3.patchandroidvendor
4.
Amss arm9
Amss
Amss
friendly
10
qualcomm
m(jb)k
turn-key
solution
1.IntelAMD
ARMRVCT
2.ARMRVCT2.2build 593patch
3.ActivePerl5.8.6.811
4.Cygwinwindowlinux
5.Python2.4.3(linux)
Amsswindow
1. cygwin
Cygwinpython
Install
default
Python
2.python2.4.3
python2.4.3python
cygwin
usr/local/bin
python
cygwinpython-2.4.3
./configure make
make install
usr/local/bin python
Python
usr/local/binpython.exe1kb
python_old.exe
python2.4.exe
python.exe. tnn
Python -V
Python 2.4.3,
3.RVCT
Rvctintel
cC:\ARM
crack\keygen.exe
licenselicense
windowsbuild
593patch
crack\patch.exe
crackreadme.txt
cmd.exe
cd c:\arm\rvct\programs\2.2\349\win_32-pentium
copy armcc.exe tcc.exe
copy armcc.exe armccp.exe
copy armcc.exe tcpp.exe
rvct
patch
amsswindow
cygwindos
cygwin
1.cygwin
cygwin/home/xxx../.bashrc
export ARMROOT=C:\\ARM
export ARMINCLUDE=$ARMROOT\\RVCT\\Data\\2.2\\349\\include\\windows
export ARMTOOLS=RVCT221
export ARMLIB=$ARMROOT\\RVCT\\Data\\2.2\\349\\lib
export ARMINC=$ARMINCLUDE
export ARMBIN=$ARMROOT\\RVCT\\Programs\\2.2\\349\\win_32-pentium
export PATH=$PYTHON_PATH:$ARMBIN:$PATHexport ARMHOME=$ARMROOT
2.cygwin../AMSS/products/76XX/build/ms
./TFNCKNLYM.cmd
hostdl_gen
..\AMSS\products\76XX\drivers\flash\tools\src\hos
tdl\hostdl_gen.
dosdos
1.
a.amss\products\76xx\build\ms\rvct22.bat
@echo off
REM ======================================================
rem Sets path for RVDS210, GNU and PERL
set ARMTOOLS=RVCT221
set ROOT_DRIVE=C:
set APPS_DIR=ARM
set APPS_PATH=%ROOT_DRIVE%\%APPS_DIR%
set ARMROOT=%APPS_PATH%
set UTILROOT=%ROOT_DRIVE%
set GNUPATH=%UTILROOT%\cygwin\bin
set PERLPATH=%UTILROOT%\perl\bin
set ARMPATH=%ARMROOT%\RVCT\Programs\2.2\349\win_32-pentium
set EMAKE_ROOT=../../../../..
rem
rem ARM Include and Path Variables
rem
set ARMLIB=%ARMROOT%\RVCT\Data\2.2\349\lib
set ARMINCLUDE=%ARMROOT%\RVCT\Data\2.2\349\include\windows
set ARMINC=%ARMROOT%\RVCT\Data\2.2\349\include\windows
set ARMBIN=%ARMROOT%\RVCT\Programs\2.2\349\win_32-pentium
REM set ARMCONF=%ARMROOT%\RDI\armperip\1.3\50
REM set ARMDLL=%ARMROOT%\RDI\rdimsvr\1.3.1\91\win_32-pentium;%ARMROOT%\RDI\Targets\Remote_A\1.3.1\98\win_32-pentium
set ARMHOME=%ARMROOT%
REM this is for BOULDER only!
REM set ARMLMD_LICENSE_FILE=8224@redcloud
REM San Diego's advertised program RVCT 2.0 installer should set this:
REM set ARMLMD_LICENSE_FILE=7117@license-ice1;7117@license-ice2;7117@license-ice3
rem
rem Path for RVCT, GNU, Perl tools
rem
set path=.;%PERLPATH%;%PYTHONPATH%;%GNUPATH%;%ARMPATH%;%UTILROOT%;%path%
REM ======================================================
b.amss\products\76xx\build\ms\TSNCJNLYM.cmd
BUILD_UNIX=yes USES_BUILD_NATIVELINUX_MODEM=yes
c.
\AMSS\products\76XX\secboot\cfg_data\Config_Gen.mak
\AMSS\products\76XX\services\fota\tools\fotapacker.mak
\AMSS\products\76XX\tools\headergen\image_auth.mak
\AMSS\products\76XX\tools\headergen\image_header.mak
\AMSS\products\76XX\tools\headergen\norimgtool.mak
\AMSS\products\76XX\tools\headergen\pboot_utils.mak
-mno-cygwin
2.dos cmd
cd amss\products\76xx\build\ms\
rvct22.bat
TSNCJNLYM
3.
amss\products\76xx\build\ms\ bin
windows
arm9
gitppt
ubuntuarm9
android
Android3
Qualcomm MSM7627 Boot(1)
Mail:booklinbook@hotmail.com
TEL :13167032980
Agenda
bootloader
Qct
Download
ARM9ARM11boot
Bootloaderbootloader
ppt
QCT Download
Arm9
Qcsbl boot
Oemsbl boot
Amss
Appsboot
Arm11
androidfastboot
Arm11 android
boot.img
bootloaderlinux kernelram disk
system.img
Android Root FS
Amss Arm9
Image
Android Arm11
Image
copy
Appsboot.mbn
bootloader
Qualcomm
QCSBL
-Continue to setup the hardware.
amss
OEMSBL
-
usbmmubus mpu~~
- DownloadQct downloader
oemsbl
- ARM11 appsbootarm11.
oemsbl
AppsbootArm11 Android
ppt2
Amssarm9 modem
qcsbl.s
oemsbl.s
qcsbl.s
oemsbl.s
qcsbl.scl
From qcsbl.scl
oemsbl.scl
From Oemsbl.scl
oemsbl_mc.c
oemsbl_aarm_boot.c
Image
Header (hex)
Little end
oemsblhd.mbn
0x0d740000
oemsbl
In targtfncknlym.h
#define SCL_EBI1_MEM_TOTAL_SIZE 0x10000000
#define SCL_MODEM_TOTAL_SIZE 0x2700000
#define SCL_MODEM_CODE_BASE ((SCL_EBI1_MEM_TOTAL_SIZE) - (SCL_MODEM_TOTAL_SIZE))
//0x10000000-0x2700000=0x0D900000
#define SCL_OEMSBL_TOTAL_SIZE 0x001C0000
#define SCL_OEMSBL_CODE_BASE ((SCL_MODEM_CODE_BASE) - (SCL_OEMSBL_TOTAL_SIZE))
//0xD900000-0x001C0000=0x0D740000
Image
Header
amsshd.mbn
appsboothd.mbn
typedef struct
{
image_type image_id;
miheader.h
uint32 header_vsn_num;
uint32 image_src
uint8* image_dest_ptr;
uint32 image_size;
uint32 code_size;
uint8* signature_ptr;
uint32 signature_size;
uint8* cert_chain_ptr;
uint32 cert_chain_size;
} mi_boot_image_header_type;
header
mibib
header
image_header.exe
image_header.c).
Appsbootheaderandroid
mkheadermkheader.c
__main
_main
.
.
ldr
blx
qcsbl.s
r1, =qcsbl_main_ctl
r1
In qcsbl_mc.c
void qcsbl_main_ctl(void)
{
qcsbl_create_vector_table();
qcsbl_hw_init( &msm_hw_id );
if ( flash != NOR_FLASH )
{qcsbl_find_mibib( flash, &old_mibib_page_num,
&mibib_page_num );}
image_header.image_id = OEM_SBL_IMG;
qcsbl_load_header( flash,&image_header, mibib_page_num );
qcsbl_load_image( flash, &image_header );
sbl = (sbl_func_tbl_ptr_type)image_header.image_dest_ptr;
sbl->init( &qcsbl_interface );
qcsbl_create_bad_block_list( flash );
sbl->setup_trusted_platform();
sbl->pre_amss_load();
sw_vsn_id = (uint64) AMSS_SW_ID;
amss_func_ptr = (func_ptr_type)
qcsbl_load_amss_image( flash,&msm_hw_id,&sw_vsn_id);
sbl->post_amss_load();
(*amss_func_ptr)();
}
qcsbl_hw_init
qcsbl_load_header();
qcsbl_load_image();
sbl->init();
oemsbloemsbl
qcsbl_main_ctl
sbl->pre_amss_load();
Appsboot
arm11 android oemsbl
qcsbl_load_amss_image( );
amss iamge
(*amss_func_ptr)();
amss
Qcsbl
Oemsbl.s
PRESERVE8
AREA OEMSBL_FUNCTION_TABLE, DATA, READONLY
DCD oemsbl_bad_block_check
DCD oemsbl_read_page
DCD oemsbl_write_page
DCD oemsbl_is_erased
DCD oemsbl_erase_block
DCD oemsbl_error_handler
DCD oemsbl_init
DCD oemsbl_setup_trusted_platform
DCD oemsbl_pre_amss_load
DCD oemsbl_post_amss_load
DCD oemsbl_disable_data_cache
DCD oemsbl_re_enable_data_cache
DCD oemsbl_read_mpages
qcsbl_load_header();
qcsbl_load_image();
sbl->init();
oemsbloemsbl
sbl->pre_amss_load();
Appsboot
arm11 android oemsbl
oemsbl_init oemsbl_init_func_tbl[i]();
oemsbl_dload_check //qct download
oemsbl_setup_trusted_platform() //arm11
Oemsbl
In oemsbl_aarm_boot.c
// appsboot
void oemsbl_load_aarm_bootloader( void )
{
/* Load the aARM boot loader header from flash into RAM. */
image_header.image_id = APPSBL_IMG;
qcsbl_ptr->load_image_header( qcsbl_ptr->boot_flash,
&image_header,
qcsbl_ptr->active_mibib_page_number );
.
apps_image_start_addr = (uint32) image_header.image_dest_ptr;
.
}
In oemsbl_aarm_boot.c
//arm11
void oemsbl_boot_aarm( void )
{
HWIO_OUTM( MSM_RAIL_CLAMP_IO,
HWIO_FMSK( MSM_RAIL_CLAMP_IO, VDD_APC_CLAMP ),
0x0 );
..
HWIO_OUTM( A11_RESET,HWIO_FMSK( A11_RESET, POR ),
0x0 );
..
HWIO_OUT( APPS_ARM_DEBUG_CTL, 0x01 );
..
HWIO_OUT( A11_RESET, 0x0 );
} /* oemsbl_boot_aarm() */
Amss
arm9
arm9 amss
Seeyou byebye
android
Android4
Qualcomm MSM7627 Boot2
-----Arm11lk (appsboot) bootloader
Mail:booklinbook@hotmail.com
TEL :13167032980
Agenda
android_3.pdf
android_3.pdfarm9
arm9arm11
arm9
arm11
1.oemsbl_load_aarm_bootloader
appsboot.mbnRAM
oemsbl_load_aarm_bootloader
..\AMSS\products\76XX\secboot\oem
sbl\oemsbl_aarm_boot.c
APPSBL_IMG
appsboothd.mbn
appsboot
ram0x00000000spec
con
2.appsboot.mbn
oemsbl_create_aarm_partition_tbl
oemsbl_create_aarm_partition_tbl
Arm11arm11
partition table
Android_5_mibib.ppt
con
3.oemsbl_get_bad_block_table
nand flash
arm11Nand flash
con
4.oemsbl_get_wm_uuid
window mobilelinux
androidmark
5.
oemsbl_boot_aarm
HWIO_A11_RESET_ADDR 0xa860020c
HWIO_MSM_RAIL_CLAMP_IO_ADDR 0xa8600290
MSM_RAIL_CLAMP_IO
1arm11reset
0
arm11release
appsboot
(appsboot)
bootloaderarm11
Arm11lk
lk (appsboot) bootloader
Lklittle kernelarm11
bootloaderusbbootloader5340
lkLittle kernel
bootloader
os
linux
Lk
fastbootimageflash
~~~
lk
lk
lk
crt0.s
lk
_start
crt0.s
Kmain()
kernel\main.c
void kmain(void)
{
1.lk
ppt
thread_init_early();
2.cachemmuarch
arch_early_init();
3.msm7227 76277x30
uart~~~
platform_early_init();
4.
target_early_init();
5.
call_constructors();
kmain
//lk
heap_init();
//
thread_init();
//dpclkevent
ppt
dpc_init();
//lk,
timer_init();
//boot
bootstrap2();
kmainc
kmain
lklk
os
thread_init_earlyheap_initthread_init
dpc_inittimer_init~~.
bootarch_early_init
platform_early_init bootstrap2
mmucache
Cpu
core
m
m
u
Cpu
core
m
m
u
mmu
mmu
0x08048000
0x080ef000
mmu
a
Mmu
0xXXXXXXXX
0x08048000
m
m
u
0x080ef000
0xXXXXXXXX
0xXXXXXXXX
0xXXXXXXXX
0xXXXXXXXX
0xXXXXXXXX
VAPA
b
mmu
1.cpummu
cpu
mmucpu
mmummu
2.mmu
3.mmu
4.arm7mmuarm9
5.mmulk bootloader
mmubootloader
cache
1.cachecpuram
ram
2.cachecpu
cache
3.mmucache
4.msm7227 cpummucache
cp15ARM9
cp15
mmucachemmu
cachecp15cp15
mmucache
mmuarch_disable_mmu();
mrc p15, 0, r0, c1, c0, 0
//cp15c1cpur0
bic r0, r0, #(1<<0)
//
mcr p15, 0, r0, c1, c0, 0
//cp15c1
mrc
mcr
cp15c10
mmuEnable mmu
cache(arch_disable_cache(); )
cache-ops.S
mrc
Bic
r1, #(1<<2)//22
mcr
Mmu(arm_write_ttbr(uint32_t val) )
mcr
C2
5340android2.1.kernelconfig
MSM_UART3_DEBUG
lk
Cache-ops.s
Mmu
arm
MSM_UART3_DEBUG
CONFIG_MSM_DEBUG_UART=3
#elif CONFIG_MSM_DEBUG_UART == 3
#define MSM_DEBUG_UART_PHYS MSM_UART3_PHYS
#endif //debug uart uart3
static void putc(int c) mach\uncompress.h
{
#if defined(MSM_DEBUG_UART_PHYS)
unsigned base = MSM_DEBUG_UART_PHYS;
while (!(readl(base + 0x08) & 0x04)) ;
writel(c, base + 0x0c);
#endif
} // kernelputc
MSM_UART3_DEBUG
4.
ppt
1.arch_early_init2. platform_early_init3. bootstrap2.
arch_early_init()
arch_early_init()mmucache
mmu cachearm_mmu_init()
arm_mmu_init()
arch_disable_cache(UCACHE);
arm_mmu_init();
arch_enable_cache(UCACHE);
arch_early_initmmuplatform_early_init
uart
platform_early_init()
uart3_clock_init();
uart_init();
platform_init_interrupts()
uartuart3
uart3
821uart2
uart2lk
platform_init_timer();
TCXO/4uart
TCXO
platform_early_init()
uart3_clock_init();
uart_init();
platform_init_interrupts()
platform_init_timer();
0~31032~N1(N
)VIC_INT_XXX0, VIC_INT_XXX1 .
1.VIC_INT_SELECT0VIC_INT_SELECT1FIQIRQ
IRQFIQIRQ
2.VIC_INT_TYPE0VIC_INT_TYPE1edge
level
edge
3.VIC_INT_ENCLEAR0VIC_INT_ENCLEAR1
VIC_INT_ENSET0VIC_INT_ENSET1
lk
platform_early_init()
uart3_clock_init();
uart_init();
platform_init_interrupts()
platform_init_timer();
DGT
timer
bootstrap2.
kmainbootstrap2
thread_resume(thread_create("bootstrap2", &bootstrap2, NULL,
DEFAULT_PRIORITY, DEFAULT_STACK_SIZE));
platform_init
bootstrap2
target_init
apps_init
Platform
acpu_clock_initarm11
acpu_clock_init
target_init7227_ffa
partition table
target_init
Apps_initlkapp
aboot_init
linuxaboot_init
acpu_clock_init
void acpu_clock_init(void)
{
int *modem_stat_check = (MSM_SHARED_BASE + 0x14);
while (readl(modem_stat_check) != 1); //share memoryarm9
while
writel((1 << 7) | (VDD_LEVEL << 3), VDD_SVS_PLEVEL_ADDR);//arm11 VDD
i = readl(A11S_CLK_SEL_ADDR) & 1;
clk = readl(PLL2_L_VAL_ADDR) & 0x3F;//arm11
for(; i < ARRAY_SIZE(clk_cntl_reg_val_7627); i += 2)
{
if(clk == ACPU_800MHZ)//7x27a800
writel(clk_cntl_reg_val_7627A[i], A11S_CLK_CNTL_ADDR);
else //7x27600
writel(clk_cntl_reg_val_7627[i], A11S_CLK_CNTL_ADDR);
writel(clk_sel_reg_val[i], A11S_CLK_SEL_ADDR); //
}
}
target_init
void target_init(void)
{
keys_init();
keypad_init();//
..
if (target_is_emmc_boot()) return;//emmcnand
..
ptable_init(&flash_ptable);//arm11partition
smem_ptable_init();//arm9partition
...
flash_init();//flash
..
flash_info = flash_get_info();//flash
..
offset = smem_get_apps_flash_start();
total_num_of_blocks = flash_info->num_blocks;
smem_add_modem_partitions(&flash_ptable);
flash_set_ptable(&flash_ptable);//arm9arm11partitiontable
..
}
apps_init
void apps_init(void)
{
const struct app_descriptor *app;
for (app = &__apps_start; app != &__apps_end; app++) {
if (app->init) app->init(app);//section(apps)
}//aboot_init()
for (app = &__apps_start; app != &__apps_end; app++) {//.
if (app->entry && (app->flags & APP_FLAG_DONT_START_ON_BOOT) == 0) {
start_app(app);
}//
}
}
#define APP_START(appname) struct app_descriptor _app_##appname __SECTION(".apps") = { .name = #appname,
#define APP_END };
APP_START(aboot)
.init = aboot_init,
APP_END
In aboot.c
APP_START(shell)
.init = shell_init,
.entry = shell_entry,
APP_END
In shell.c
lk
bootstrap2,bootstrap2
app()
linuxAboot
appaboot
linux kernel
aboot_init
boot_linux_from_flash()
linux Kernel
boot.img1.kernel 2.kernel3.ramdisk, 4.second stage()
+-----------------+
| boot header | 1 page
+-----------------+
| kernel
| n pages
+-----------------+
| ramdisk
| m pages
+-----------------+
| second stage | o pages
+-----------------+
256M Hdr->kernel_addr=0x208000 kernel
Hdr->ramdisk_addr =0x1200000 .
ppt
lk
linux kernel
ppt
lkppt
lk
1.lknand
flash
lk\platform\nand.c
static struct flash_identification supported_flash[] =
{
/* Flash ID ID Mask Density(MB) Wid Pgsz Blksz oobsz onenand Manuf */
{0x00000000, 0xFFFFFFFF,
0, 0,
0,
0, 0, 0},
{0x1500aaec, 0xFF00FFFF, (256<<20), 0, 2048, (2048<<6), 64, 0}, /*Sams*/
{0x5500baec, 0xFF00FFFF, (256<<20), 1, 2048, (2048<<6), 64, 0}, /*Sams*/
};
2.lk
In lk\target\msm7627_ffa\keypad.c
static unsigned int halibut_row_gpios[] = { 31, 32, 33};
static unsigned int halibut_col_gpios[] = { 38, 39, 40 };
static const unsigned short halibut_keymap[ARRAY_SIZE(halibut_col_gpios) * ARRAY_SIZE(halibut_row_gpios)]
={
//retrun
//vol+(KEY_VOLUMEUP), now as up
//research(?), now as right
//home(230), now as enter
//vol-(KEY_VOLUMEDOWN) , now as center
//send(?), now as left
//menu
3.lkarm11
In lk\target\msm7627_ffa\init.c
static struct ptentry board_part_list[] = {
{ .start = 0, .length = 40 /* 5MB */,
.name = "boot",},
{ .start = 40, .length =960 /* 120MB */, .name = "system",},
{.start = 1000, .length = 40 /* 5MB */, .name = "cache",},
{.start = 1040,.length = 40 /* 5MB */,.name = "recovery",},
{.start = 1080,.length = 12 /* 1.5MB */,.name = persist",},
{.start = 1092,.length = 2400,.name = "userdata", },
};
4.lk
In lk\project\msm7627_ffa.mk
DEFINES += WITH_DEBUG_UART=1
In lk\platform\msm_shared\uart.c
5.lklcdsplash.img
1 In lk\target\msm7627_ffa\rules.mk
DEFINES += DISPLAY_TYPE_MDDI=0
DEFINES += DISPLAY_TYPE_LCDC =1 //821lcdc
DEFINES += DISPLAY_SPLASH_SCREEN =1
2 In lk\platform\msm_shared\lcdc.c
lcd struct fbcon_config *lcdc_init(void)
820 700
lcdgpiolk
lkgpiolk\platform\msm7k\gpio.clcdc
lcdc_init
3table splashboard_part_list[]
4565splash.img fastboot
6.lkdebug
splashlklcdc
lk\project\msm7627_ffa.mk
DEFINES += WITH_DEBUG_FBCON=1