U-boot移植方法
环境:
ubuntu 20.04
开发板:FS4412(Cortex-A9)
u-boot版本:2013.01
u-boot启动选项:
(1) SD卡启动 Bootloader 程序在sd卡启动
(2) EMMC启动 flash启动 BootLoader的程序在flash中
u-boot源码目录结构及释义:
arch 平台相关的代码,芯片体系等
以下与平台无关
drivers 驱动相关,设备的相关驱动程序
将硬件信息与驱动剥离,放到设备树文件,当设备变化时只需要修改设备树就可以,增强了代码的移植性,减轻维护成本。
fs 文件系统相关代码
init 系统初始化相关的
include 头文件相关代码
kernel 内核实现相关代码,调度算法等
lib 系统相关库
net 网络协议相关
block 块设备相关的
Document 帮助文档
mm 内存管理相关的
1、下载源码
我们可以在下面这个网站上下载最新的
ftp://ftp.denx.de/pub/u-boot/
也可以使用以前的版本(本试例)
链接
2、将uboot源码添加到ubuntu自己的目录中并解压操作,然后进入此文件
tar xvf u-boot-2013.01.tar.bz2
cd u-boot-2013.01
3、指定交叉编译工具链
sudo vim Makefile
进入命令行:/CROSS_COMPILE查找对应位置 做如下修改
4、指定产品CPU
我们产品用的CPU是 exynos 4412 查看u-boot源码该CPU是否已支持U-boot已支持,见 arch/arm/cpu/armv7/exynos/
5、指定产品board
找一个最类似的board配置修改, 这里我们参考的是board/samsung/origen/
sudo cp board/samsung/origen/ board/samsung/fs4412/ -rf
sudo mv board/samsung/fs4412/origen.c board/samsung/fs4412/fs4412.c
sudo vim board/samsung/fs4412/Makefile
修改 origen.o 为 fs4412.o
sudo cp include/configs/origen.h include/configs/fs4412.h
sudo vim include/configs/fs4412.h
修改配置文件
sudo vim boards.cfg
6、编译u-boot
make distclean //先清除make fs4412_config //导入配置make //编译
但是该文件还不能在我们板子上运行,我们需要对u-boot源代码进行相应的修改
之后会生成一个u-boot.bin文件
7、使用sudo vim arch/arm/cpu/armv7/start.S 134 行后添加点灯程序
添加下面的内容
#if 1ldr r0, =0x11000c40 @GPK2_7 led2ldr r1, [r0]bic r1, r1, #0xf0000000orr r1, r1, #0x10000000str r1, [r0]ldr r0, =0x11000c44mov r1,#0xffstr r1, [r0]#endif
8、exynos 需要三星提供的初始引导加密后,我们的u-boot,才能被引导运行
cp sdfuse_q u-boot-2013.01 -rf
注:sdfuse_q 三星提供的加密处理
cp CodeSign4SecureBoot u-boot-2013.01 -rf
9、修改Makefile
vim Makefile
在
$(obj)u-boot.bin: $(obj)u-boot
$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
$(BOARD_SIZE_CHECK)
下添加
@#./mkuboot
@split -b 14336 u-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
10、拷贝编译脚本
cp build.sh u-boot-2013.01chmod 777 u-boot-2013.01/ build.sh./buildsh
注:build.sh 脚本方式完成自动添加加密方式,
编译生成所需文件u-boot_fs4412.bin
烧写新的u-boot_fs4412.bin
复位,发现灯有点亮,说明 我们的u-boot有运行到
串口打印、网卡移植、flash移植见操作手册
U-boot移植方法相关推荐
- spring boot: GlobalDefaultExceptionHandler方法内的友好错误提示,全局异常捕获
spring boot: GlobalDefaultExceptionHandler方法内的友好错误提示,全局异常捕获 当你的某个控制器内的某个方法报错,基本上回显示出java错误代码,非常不友好,这 ...
- 嵌入式c语言移植,嵌入式C语言位操作的移植方法
单片机的应用越来越广泛,种类也越来越多.由于嵌入式C语言可读性强.移植性好,与汇编语言相比大大减轻了软件工程师的劳动强度,因而越来越多的单片机工程师开始使用C语言编程.但C语言的可移植性仅限于与硬件无 ...
- 【STM32F429的DSP教程】第6章 ARM DSP源码和库移植方法(MDK5的AC5和AC6)
完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第6章 ARM DSP源码和库移植方法(MDK5的AC5 ...
- DSP视频教程第2期:系统介绍ARM DSP数字信号处理库以及超简单的移植方法分享(2022-01-27)
视频教程汇总帖:[学以致用,授人以渔]2022视频教程汇总贴,持续更新中,DSP更新到第4期,ThreadX更新到第3期,BSP驱动更新到第9期(2022-03-17) - STM32F429 - 硬 ...
- 安卓版炉石修改服务器,越南玩家自制炉石传说安卓版客户端 可能公开移植方法...
炉石传说安卓版何时才能上线?相信这个一定是广大安卓炉友 关心的话题了.对此,暴雪早在今年年初就已提到:除了已经上架的iPad版外,对应安卓系统的炉石客户端也在紧密制作中,预计将会在年底上线. 凭什么苹 ...
- Spring Boot使用方法小札(3):应用启动后做一些事
有时候我们需要在应用启动或者重启后做一些工作,比如删除一些临时文件或者Redis中的缓存,这在没有使用Spring Boot之前,在Spring框架下是通过ApplicationListener监听器 ...
- 一文搞懂网卡驱动的原理与移植方法
1.网卡设备驱动原理 1.1 层次结构 Linux系统对网络设备驱动定义了4个层次, 这4个层次有到下分为: 1.网络协议接口层:实现统一的数据包收发的协议.该层主要负责调用dev_queue_xmi ...
- 一种通过刷写替换boot的方法
写在前面的废话 众所周知,ECU软件包括BOOT和APP两部分,一般来说,boot是固化的软件,改动可能性很小,一般用来更新APP,但是,如果有一天boot真的需要更新呢,而且是大批量的更新,真的需要 ...
- TI CCS库函数开发最快的DSP工程移植方法
最近在使用CCS的时候,需要移植TI提供的官方例程,但是发现官方例程所使用的芯片与项目选用的DSP型号并不相同,但是目前的TI DSP均使用DSP库函数开发,基于这一点,就想尝试能否用最快的方法实现例 ...
- cesm2(clm5.0)移植方法
#武汉加油,浙江加油,中国加油!# 断断续续花了2个多月才把cesm2移植到centos6上,目前尚无cesm2完整的移植教程,在移植过程中也遇到了不少问题,所以在这里记录下,大致完整,但某些细节可能 ...
最新文章
- 您的用户界面是您产品不会因心灵感应而谦卑的补偿
- PHP HashTable总结
- strcpy和strncpy区别 memcpy strcpy strncpy lstrcpy lstrncpy wstrcpy, memmove
- 请求外部图片的时候,遇到403的错误的解决方案
- BaseActivity的抽取
- 用户分群模型:如何打造精细化运营基石?
- linux c 服务程序,Linux C 后台服务程序单进程控制
- 【dfs】【bfs】【链表】 求连通分量 (ssl 1759)
- 语言模拟蒲丰问题_R语言小数定律的保险业应用:泊松分布模拟索赔次数
- 第五节:Task构造函数之TaskCreationOptions枚举处理父子线程之间的关系。
- dependency 中的 classifier属性
- scandall pro找不到扫描仪_想要高清无色差的石材图片就得用扫描仪
- ARP,这个隐匿在计网背后的男人
- java计算机毕业设计疫情期间医院挂号管理系统源码+数据库+lw文档+系统+部署
- android自定义view设置背景颜色,Android View的几种背景颜色设置
- 基于区块链的知识共享框架-Aletheia
- 初中学历程序员面试被HR吐槽,初中学历还有要月薪3万5,到底是学历重要还是能力重要?...
- 【openMP并行计算】计算π
- update多表联合更新
- 13.Linux创建快捷方式
热门文章
- M2提示加载客户端版本信息失败的解决办法
- Extjs EditorGridPanel复选框实现单选, 同时锁住指定行
- ctfmon是什么启动项_Win7启动项找不到ctfmon进程无法正常使用输入法的解决方法...
- Netty集成WebSocket实现客户端、服务端长连接
- FlashCC导入使用greensock(TweenLite)包
- 第2次作业:微博软件分析
- 算法题15 穿越沙漠问题,飞机加油问题
- unity 2020可用NDK 下载地址版本为19.0.5232133
- robotframework-selenium2library-导入可选参数
- 【工具分享】画流程图工具Gliffy Diagrams