三星 exynos 4412 (如何从0移植uboot支持exynos4412?
本文主要目的是如何从0编译和移植uboot,增加串口、网络、emmc等功能,让他支持exynos4412开发板。
一、移植步骤
1. Uboot配置
- 指定交叉编译工具链 进入uboot代码根目录
$cdu-boot-2013.01
修改 Makefile 在
ifeq($(HOSTARCH),$(ARCH)) CROSS_COMPILE ?= endif
下添加
ifeq (arm,$(ARCH)) CROSS_COMPILE ?= arm-none-linux-gnueabi- endif
交叉编译工具
- 指定产品CPU 我们产品用的CPU是 exynos 4412;
查看u-boot源码
arch/arm/cpu/armv7/exynos/
可见U-boot已支持该CPU。
- 指定产品BOARD 三星公司已经为exynos 4412发布了初始化的程序
origen
- cpu硬件信息 对应的该CPU硬件信息头文件位于以下位置
include/configs/origen.h
该文件定义了uboot启动必须关于exynos 4412必须的一些资源信息。
- boards.cfg 在uboot-2013-01中,顶层目录下的boards.cfs文件中查看它支持的开发板和相应的信息,后续的编译过程需要根据配置名检索到相应的信息。文件格式如下
和以前的老版本比,配置更加规范化了,其实这些就是相关文件分类的一个文件夹的描述。依照这个层次关系,我们可以很方便地对我们开发板进行配置。
- 编译u-boot
不同版本的uboot的配置命令可能是不同的,源码包的文件README通常会有相应的配置命令【其他版本的uboot会不一样】
配置和编译命令如下
$ makedistclean $ makeorigen_config
改配置命令会生成以下文件
include/config.h
config.h
编译
$ makeall
编译完成后生成的u-boot.bin就是可执行的镜像文件。
并不会生成真正适配我们板子的uboot,只是适配参考板,该文件还不能在我们板子上运行,我们需要对u-boot源代码进行相应的修改。
2. 确认第一条指令有运行到 (点灯法)
在arch/arm/cpu/armv7/start.S 134 行后添加点灯程序
#if 1ldrr0, =0x11000c40 @GPX2_7led2 ldr r1, [r0] bic r1, r1, #0xf0000000orr r1, r1, #0x10000000str r1, [r0] ldr r0, =0x11000c44 mov r1,#0xffstr r1, [r0] #endif
因为uboot刚启动的时候,串口没有来得及初始化,我们可以通过点亮LED的方法来判断程序是否执行到此处。
代码详解参考《十、LED汇编、C语言驱动编写》
3. 添加三星加密方式
exynos 需要三星提供的初始引导加密后,我们的u-boot,才能被引导运行,这其中要用到下面的几个命令或三星提供的工具软件,这些操作的目的就是根据三星的芯片的启动要求对uboot.bin 进行一些处理,包括在特定长度的位置加上和校验信息以及插入一些文件段。
$cp sdfuse_q u-boot-2013.01-rf $ chmod777u-boot-2013.01/sdfuse_q -R $cp CodeSign4SecureBoot u-boot-2013.01-rf
注CodeSign4SecureBoot 三星提供的安全启动方式 ,对应的程序由三星提供。sdfuse_q目录下的文件是针对三星堆uboot.bin文件格式要求进行加密编写的文件。
修改根目录Makefile,实现sdfuse_q的编译 在
$(obj)u-boot.bin:$(obj)u-boot $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ $(BOARD_SIZE_CHECK)
下添加
@#./mkuboot@split -b 14336u-boot.bin bl2 @make -C sdfuse_q/ @#cp u-boot.bin u-boot-4212.bin@#cp u-boot.bin u-boot-4412.bin@#./sdfuse_q/add_sign@./sdfuse_q/chksum @./sdfuse_q/add_padding @rm bl2a @echo
注意是tab键缩进的,否则makefile编译报错 注意如果执行了make distclean 需重新拷贝CodeSign4SecureBoot
为方便起见,在根目录下创建编译脚本build.sh,该脚本将自动完成添加加密方式。
1#!/bin/sh23sec_path="CodeSign4SecureBoot/"4CPU_JOB_NUM=$(grepprocessor/proc/cpuinfo|ak'{field=$NF};END{print field+1}')5ROOT_DIR=$(pd)6CUR_DIR=${ROOT_DIR##
科技技术
- 芜湖冰箱24小时服务热线-全国统一人工【7X24小时
- 兰州江自动化中央空调维修-中央空调维修电话号
- 余姚空气能售后维修服务中心—— 全国统一服务
- 燕郊电视机维修-燕郊电视机维修电话号码
- 瓦房店油烟机售后维修服务中心-(7X24小时)登记
- 净化空调维修安全-净化空调维保需要什么资质
- 株洲集成灶售后服务电话号码-(7X24小时)登记报
- 乌鲁木齐空调全国维修电话-24小时服务热线
- 徐州寿光电视售后维修服务中心—— 全国统一人
- 温州平顶山太阳能售后维修服务中心-全国统一人
- 银川镇江壁挂炉售后维修服务中心-全国统一人工
- 邢台统帅洗衣机售后维修服务中心—全国统一人
- 三亚北海油烟机厂家服务热线
- 喜香玉热水器E1故障码-百色热水器故障代码E133
- 温岭集成灶全国维修电话-24小时服务热线
- 拉萨集成灶厂家统一人工客服电话号码多少(厂