【s5p4418嵌入式学习】分步编译之uboot编译03
来源:互联网 发布:奥利奥爆浆油条淘宝 编辑:程序博客网 时间:2024/05/21 08:39
作者: Linux-小企鹅
博客地址:http://blog.csdn.net/u012319379/article/details/77816782
上一篇分析了 http://blog.csdn.net/u012319379/article/details/77803806,这是一个简化操作流程的脚本,降低操作难度,对于学习的话需要继续深入研究一下。
uboot深入分析
脚本全文在上一篇博客 http://blog.csdn.net/u012319379/article/details/77803806已经全部贴出来了,也做了一些简要分析,接下来我就贴主要的脚本分析一下。
根据设备类型设置宏定义
- 根据build_android.sh的ROOT_DEVICE_TYPE可以看到类型个为SD
case ${ROOT_DEVICE_TYPE} in sd) apply_uboot_sd_root ;; nand) apply_uboot_nand_root ;;esac
- apply_uboot_sd_root 函数分析
function apply_uboot_sd_root(){ echo "====> apply sd root" disable_uboot_nand_root disable_uboot_nand_memory_layout enable_uboot_sd_root}
- disable_uboot_nand_root函数分析
function disable_uboot_nand_root(){ local src_file=${TOP}/u-boot/include/configs/${CHIP_NAME}_${BOARD_PURE_NAME}.h sed -i 's/^#define[[:space:]]CONFIG_CMD_NAND/\/\/#define CONFIG_CMD_NAND/g' ${src_file} sed -i 's/^#define[[:space:]]CONFIG_NAND_FTL/\/\/#define CONFIG_NAND_FTL/g' ${src_file} sed -i 's/^#define[[:space:]]CONFIG_LOGO_DEVICE_NAND/\/\/#define CONFIG_LOGO_DEVICE_NAND/g' ${src_file}#关闭三个宏定义//#define CONFIG_CMD_NAND//#define CONFIG_NAND_FTL//#define CONFIG_LOGO_DEVICE_NAND(代码没找到,相当于没有)}
- disable_uboot_nand_memory_layout函数分析
function disable_uboot_nand_memory_layout(){ local src_file=${TOP}/u-boot/include/configs/${CHIP_NAME}_${BOARD_PURE_NAME}.h local config_text_base="#define CONFIG_SYS_TEXT_BASE 0x42C00000" sed -i "s/.*#define[[:space:]]CONFIG_SYS_TEXT_BASE.*/${config_text_base}/g" ${src_file} local config_malloc_start="#define CONFIG_MEM_MALLOC_START 0x43000000" sed -i "s/.*#define[[:space:]]CONFIG_MEM_MALLOC_START.*/${config_malloc_start}/g" ${src_file} local config_malloc_length="#define CONFIG_MEM_MALLOC_LENGTH 32*1024*1024" sed -i "s/.*#define[[:space:]]CONFIG_MEM_MALLOC_LENGTH.*/${config_malloc_length}/g" ${src_file}#定义三个宏#define CONFIG_SYS_TEXT_BASE 0x42C00000#define CONFIG_MEM_MALLOC_START 0x43000000#define CONFIG_MEM_MALLOC_LENGTH 32*1024*1024}
- enable_uboot_sd_root函数分析
function enable_uboot_sd_root(){ local src_file=${TOP}/u-boot/include/configs/${CHIP_NAME}_${BOARD_PURE_NAME}.h sed -i 's/^\/\/#define[[:space:]]CONFIG_CMD_MMC/#define CONFIG_CMD_MMC/g' ${src_file} sed -i 's/^\/\/#define[[:space:]]CONFIG_LOGO_DEVICE_MMC/#define CONFIG_LOGO_DEVICE_MMC/g' ${src_file} local root_device_num=$(get_sd_device_number ${TOP}/device/nexell/${BOARD_NAME}/fstab.${BOARD_NAME}) sed -i 's/^#define[[:space:]]CONFIG_BOOTCOMMAND.*/#define CONFIG_BOOTCOMMAND \"ext4load mmc '"${root_device_num}"':1 0x48000000 uImage;ext4load mmc '"${root_device_num}"':1 0x49000000 root.img.gz;bootm 0x48000000\"/g' ${src_file} sed -i 's/.*#define[[:space:]]CONFIG_CMD_LOGO_WALLPAPERS.*/ #define CONFIG_CMD_LOGO_WALLPAPERS \"ext4load mmc '"${root_device_num}"':1 0x47000000 logo.bmp; drawbmp 0x47000000\"/g' ${src_file} sed -i 's/.*#define[[:space:]]CONFIG_CMD_LOGO_BATTERY.*/ #define CONFIG_CMD_LOGO_BATTERY \"ext4load mmc '"${root_device_num}"':1 0x47000000 battery.bmp; drawbmp 0x47000000\"/g' ${src_file} sed -i 's/.*#define[[:space:]]CONFIG_CMD_LOGO_UPDATE.*/ #define CONFIG_CMD_LOGO_UPDATE \"ext4load mmc '"${root_device_num}"':1 0x47000000 update.bmp; drawbmp 0x47000000\"/g' ${src_file}#开启宏定义#define CONFIG_CMD_MMC#define CONFIG_LOGO_DEVICE_MMC#define CONFIG_BOOTCOMMAND "ext4load mmc '"${root_device_num}"':1 0x48000000 uImage;ext4load mmc '"${root_device_num}"':1 0x49000000 root.img.gz;bootm 0x48000000"#define CONFIG_CMD_LOGO_WALLPAPERS "ext4load mmc '"${root_device_num}"':1 0x47000000 logo.bmp; drawbmp 0x47000000"#define CONFIG_CMD_LOGO_BATTERY \"ext4load mmc '"${root_device_num}"':1 0x47000000 battery.bmp; drawbmp 0x47000000"#define CONFIG_CMD_LOGO_UPDATE "ext4load mmc '"${root_device_num}"':1 0x47000000 update.bmp; drawbmp 0x47000000"}
设置Makefile
- cp Makefile_4418 Makefile
设置配置文件
- make s5p4418_dron2_config
编译
- make -j8开启8个线程编译u-boot
总结
- 关闭一些宏
//#define CONFIG_CMD_NAND//#define CONFIG_NAND_FTL//#define CONFIG_LOGO_DEVICE_NAND(代码没找到,相当于没有)
- 设置代码基地址和内存开始地址,内存大小
#define CONFIG_SYS_TEXT_BASE 0x42C00000#define CONFIG_MEM_MALLOC_START 0x43000000#define CONFIG_MEM_MALLOC_LENGTH 32*1024*1024
3.设置宏命令
#define CONFIG_CMD_MMC#define CONFIG_LOGO_DEVICE_MMC#define CONFIG_BOOTCOMMAND "ext4load mmc '"${root_device_num}"':1 0x48000000 uImage;ext4load mmc '"${root_device_num}"':1 0x49000000 root.img.gz;bootm 0x48000000"#define CONFIG_CMD_LOGO_WALLPAPERS "ext4load mmc '"${root_device_num}"':1 0x47000000 logo.bmp; drawbmp 0x47000000"#define CONFIG_CMD_LOGO_BATTERY \"ext4load mmc '"${root_device_num}"':1 0x47000000 battery.bmp; drawbmp 0x47000000"#define CONFIG_CMD_LOGO_UPDATE "ext4load mmc '"${root_device_num}"':1 0x47000000 update.bmp; drawbmp 0x47000000"
上一节有个地方补充一下
- BOARD_PURE_NAME=${BOARD_NAME%_*}
- BOARD_PURE_NAME=${BOARD_NAME#*_}
来源于百度shell # % ## %%案例解释”
代码如下:file=/dir1/dir2/dir3/my.file.txt可以用${ }分别替换得到不同的值:${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt${file#*.}:删掉第一个 . 及其左边的字符串:file.txt${file##*.}:删掉最后一个 . 及其左边的字符串:txt${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3${file%%/*}:删掉第一个 / 及其右边的字符串:(空值)${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my记忆的方法为:# 是 去掉左边(键盘上#在 $ 的左边)%是去掉右边(键盘上% 在$ 的右边)单一符号是最小匹配;两个符号是最大匹配${file:0:5}:提取最左边的 5 个字节:/dir1${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2也可以对变量值里的字符串作替换:${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt${file//dir/path}:将全部dir 替换为 path:/path1/path2/path3/my.file.txt
阅读全文
0 0
- 【s5p4418嵌入式学习】分步编译之uboot编译03
- 【s5p4418嵌入式学习】分步编译之kernel编译04
- 【s5p4418嵌入式学习】分步编译之module编译05
- 【s5p4418嵌入式学习】分步编译之安卓06
- 【s5p4418嵌入式学习】u-boot学习之编译与Makefile结合分析08
- 【s5p4418嵌入式学习】系统编译脚本分析02
- uboot编译学习---编译命令
- 【s5p4418嵌入式学习】u-boot学习之makefile注释07
- 编译命令----分步介绍
- gcc分步编译
- 【s5p4418嵌入式学习】开篇01
- 九鼎创展s5p4418开发板Android4.4-uboot编译脚本分析
- s5p4418-kitkat 编译及注意事项
- 和菜鸟一起深入学习国嵌实验之gcc分步编译&&gdb调试
- 嵌入式学习笔记之gcc编译
- 嵌入式学习之uboot移植
- UBOOT编译学习-----配置过程
- uboot编译
- Java中读取Map的两种方法对比
- 史上最详细的微生物扩增子数据库整理
- 最小二乘法
- Linux内核驱动开发注意事项
- Docker+Gogs搭建个人Git服务
- 【s5p4418嵌入式学习】分步编译之uboot编译03
- Java IO最详解
- 通用OA系统如何防止后门检测的解决方案,以通达OA为例说明
- 手把手教你给一个iOS app配置多个环境变量
- Xstream使用
- 浅析 React 工作原理
- SpringMVC 中文乱码解决方案
- Windows下的MySQL安装、MySQL-Front安装
- 数组中的逆序对