问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

灵动a20启动器怎么启动

发布网友 发布时间:2022-05-11 06:33

我来回答

1个回答

热心网友 时间:2023-10-03 06:04

,boot1,u-boot,boot0与boot1源码在lichee/boot/目录下, 机器上电执行boot0,boot0

A20启动代码流程分析:
1:全志的启动包括boot0,boot1,u-boot,boot0与boot1源码在lichee/boot/目录下,
机器上电执行boot0,boot0就会引导boot1,boot1再引导u-boot。
2:在lichee/boot/目录下的Makefile文件指定了boot1的编译目录,例如
make -f make_sdmmc -C boot1/core -j8命令就是调用lichee/boot/boot1/core目录下make_sdmmc脚本编译,
make_sdmmc最终又调用make.cfg脚本编译,所以lichee/boot/目录下的Makefile文件指定的编译路径最终都会
调用各自目录下的make.cfg来编译。
3:使用make_nand与make_sdmmc脚本是core目录生成的boot1_nand.bin与boot1_sdcard.bin,同时在
lichee/boot/workspace/egon/与lichee/tools/pack/chips/sun7i/eGon/目录生成,他们分别调用
lichee/boot/boot1/driver/drv_nand/与lichee/boot/boot1/driver/drv_sd/目录下的文件;
boot1_nand.bin与boot1_sdcard.bin分别对应启动模式:nandflash与inand启动,配置文件是在
lichee/boot/pack/chips/sun7i/configs/android/目录下相应的文件指定,其中storage_type字段指定,
2为inand启动,—1为nandflash启动;Boot_Android是正常启动模式,Boot_Burn是调试模式,Card_Android
是升级模式,他们分别生成boot.axf,prvt.axf与sprite.axf镜像,同时在
lichee/boot/workspace/wboot/bootfs/与lichee/tools/pack/chips/sun7i/wboot/bootfs/目录生成;
lichee/boot/boot1/driver/drv_de/目录是多媒体库源码,是Lcd与HDMI等显示源码,同时在
lichee/boot/workspace/wboot/bootfs/与lichee/tools/pack/chips/sun7i/wboot/bootfs/目录生成
drv_de.drv镜像。
4:arm_start.S(boot1/core/arm_board)->eGon2_swi_handler->eGon2_swi_handler_entry->eGon2_init->
eGon2_start->eGon2_storage_type_set(判断启动模式,加载boot.axf或者sprite.axf),eGon2_run_app->
FS_fread(加载.axf文件),elf_loader[*entry = (__u32)priv->main;],func(argc, argv)[该函数就是
BootMain()的指针]->BootMain。
(1)正常启动模式:
BootMain->BoardInit_Display[加载drv_de.drv,判断显示模式,LCD,TV,HDMI等],check_power_status[
检测电压与电池状态,判断是否开机],BootOS_detect_os_type[加载u-boot.bin,PreBootOS->
boot_dsipatch_kernal[设置u-boot的物理地址是*kernal_addr = 0x4a000000]->wBoot_fopen("c:\\linux\\u-boot.bin", "rb")],
BootOS[wBoot_jump_to_linux->EGON2_SWI_JUMP_TO_LINUX->eGon2_jump_to_android_linux直接进入u-boot
接口]。
(2)升级模式:
BootMain->boot_ui_init[加载drv_de.drv,判断显示模式,LCD,TV,HDMI等],card_sprite->
update_flash_hardware_scan[扫描当前存储设备是nand还是inand,update_boot0,update_boot1,
根据sprite_type判断升级nand还是inand]。
5:(1)lichee/tools/pack/pack脚本打包镜像文件。
(2)编译kernel的时候首调用./build.sh -p sun7i_android->buildroot/scripts/common.sh->
lichee/linux-3.3/build.sh->lichee/buildroot/scripts/build_sun7i_android.sh编译。
在编译kernel的时候也编译也u-boot,调用./build.sh -p sun7i_android->buildroot/scripts/common.sh->
lichee/u-boot/build.sh编译。
6:lichee/boot/pack/chips/sun7i/wboot/bootfs.ini或lichee/tools/pack/chips/sun7i/wboot/bootfs.ini
把文件系统盘符映射成C盘,就是代码中使用的c:\\boot.ini","c:\\sprite.axf"等。
lichee/tools/pack/chips/sun7i/configs/android/default/下有env.cfg与image.cfg配置文件,
env.cfg是u-boot使用的配置文件,包括nand_root,mmc_root,loglevel,bootcmd等参数;
image.cfg是boot使用的文件列表与ITEM_ROOTFSFAT32等重要符号。

7:sys_partition.fex文件中各个分区与下载对应的文件如下:
bootloader分区保存bootloader.fex,bootloader.fex就是由boot.axf u-boot.bin等组成。
env分区保存env.fex,env.fex就是lichee/tools/pack/chips/sun4i/configs/crane/default/env.cfg文件,它是u-boot的基本配置。
boot分区保存boot.fex,boot.fex是boot.img的链接,它由kernel与ramdisk组成,使用fastboot下载的时候就是下载boot.img。
system分区保存system.fex,system.fex是system.img的链接,它是android系统,使用fastboot下载的时候就是下载system.img。
recovery分区保存recovery.fex,recovery.fex是recovery.img的链接,它也是由kernel与ramdisk组成,用于系统恢复,使用fastboot下载的时候就是下载recovery.img。
misc分区用于恢复系统设置的时候在uboot中保存一些变量与命令的值。
*.fex文件在lichee/tools/pack/out/目录,*.img在anroid/out/...下。

8:A20的分区如下:
--------fastboot partitions--------
-total partitions:11-
-name- -start- -size-
bootloader : 8000 8000
env : 10000 8000
boot : 18000 8000
system : 20000 100000
data : 120000 100000
misc : 220000 8000
recovery : 228000 10000
cache : 238000 80000
private : 2b8000 8000
databk : 2c0000 80000
UDISK : 340000 3e0000
-----------------------------------
其中UDISK就是作为SDCARD分区,bootloader是从16MB开始,在bootloader的前面是
16KB的MBR_SIZE与16KB的DL_SIZE。

9:各个镜像的对应的内存地址:
在read_boot_img()或者do_boota()都可以打印这些信息。
u-boot的地址为0x4a000000,在boot_dsipatch_kernal函数里强制赋值,也在该函数里
使用wBoot_fopen("c:\\linux\\u-boot.bin", "rb")与wBoot_fread((void *)(*kernal_addr), 1, file_length, hd_file)
把u-boot.bin从存储设备加载到0x4a000000内存地址,之后boot1从BootOS(para_addr, kernal_addr)
跳转到u-boot。
*kernal_addr = 0x4a000000。
kernel地址为0x40008000,ramdisk地址为0x41000000,在CONFIG_EXTRA_ENV_SETTINGS
中的boota 40007800其实是把boot.img下载到内存中的地址,由于boot.img中包含了
kernel与ramdisk,也包含了这两个镜像在内存中的地址,还有检查boot.img的magic
是不是ANDROID,从存储设备加载这个两个镜像到内存的操作是在read_boot_img函数里,
在u-boot是do_boota函数里再次检查boot.img的合法性。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2022年是公伏还是母伏 2022年三伏天是公伏还是母伏 2022年三伏天为什么会有40天? 2022年中伏会被闰至多少天? 巴杜尔湖在什么位置 怎样把黑色半裙与白色飘带衬衫的搭配穿出优雅大气感? 黑白波点飘带衬衫有哪些优雅又复古的搭配思路值得借鉴? 怎样把蓝色飘带衬衫和蓝色印花半裙的搭配穿出气质感? 选择飘带衬衫搭配印花半裙时,需要注意哪些细节? 洗衣机海尔XQB60-Z9288和三洋XQB60-M808哪个好用啊,有了解这两款机型... 海尔XQS60-Z9288怎么样? cubie script.bin 在哪个分区 分志 分卷区别 适合在家去黑头的方法有哪些?甲硝锉凝胶去黑头可以吗?? 用什么方法可以自已在家里去除黑头? win7插网线未识别网络 在家祛黑头的办法有哪些? oppor7c屏幕是多大? 在家去黑头的最好方法 oppor7c怎样才能用移动4g oppor7c是全网通吗是可以同插两张电信卡吗? oppo r7c 5.0屏的功能参数,,和支持多大内存卡 oppor7C有多少G 蚂蚁金服代我付了50元怎么还 我也逾期半年了真心没有还款能力蚂蚁金服工作人员说给我发律师函我说可不可以慢慢还她们说必须全款结清 我从蚂蚁金服借500花了,因不懂通过什么方式还而逾期2天了,严重吗?怎样还呢? 蚂蚁金服里怎么还钱? 中国银行凤凰知音国航白金卡申请 请问一下,2019年六盘水初中生地会考成绩什么时候出来? 如何查询2019年的河南濮阳油田生地会考成绩 西安公交500路线路图 平板求推荐 吴征镒的主要成就 谁知道宝丰酒的历史?谁知道宝丰酒的历史啊啊啊啊 如何制作android固件? 台电p75a可以玩网页游戏么? 混搭风格:个性的长筒靴搭配小雏菊连衣裙,时髦又洋气,你觉得怎么样? 垃圾桶可回收,不可回收的分类贴纸在哪能买到? 这款长筒靴男生穿怎么样? 长筒靴怎样保养? 何洁机场造型“翻车”,穿橙色外套虽减龄,长筒靴却暴露出了怎样的身材? 巨康的长筒靴质量怎么样? 请问大家觉得图片中的女性穿着的长靴怎样??适合她吗?? 6-phenylhex-1-en-4-yne是什么化合物 苯与烯 炔的区别。。。怎样鉴别 大学有机化学试题示例一答案 在相同状况下,炔烃 与 苯和苯的同系物,含碳量哪个高?为什么? 如何用化学方法鉴别甲苯、苯乙烯、苯乙炔、叔丁基苯? 有机化学命名里苯乙烯的命名原则是怎么样的,为什么它不遵循一般的命名原则,它的原则是怎么样的 苯基与炔基那个取代基更加优先?为什么? 不是心理学专业的学生可以报考心理咨询师吗?有什么要求?