环境:

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移植方法相关推荐

  1. spring boot: GlobalDefaultExceptionHandler方法内的友好错误提示,全局异常捕获

    spring boot: GlobalDefaultExceptionHandler方法内的友好错误提示,全局异常捕获 当你的某个控制器内的某个方法报错,基本上回显示出java错误代码,非常不友好,这 ...

  2. 嵌入式c语言移植,嵌入式C语言位操作的移植方法

    单片机的应用越来越广泛,种类也越来越多.由于嵌入式C语言可读性强.移植性好,与汇编语言相比大大减轻了软件工程师的劳动强度,因而越来越多的单片机工程师开始使用C语言编程.但C语言的可移植性仅限于与硬件无 ...

  3. 【STM32F429的DSP教程】第6章 ARM DSP源码和库移植方法(MDK5的AC5和AC6)

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第6章   ARM DSP源码和库移植方法(MDK5的AC5 ...

  4. DSP视频教程第2期:系统介绍ARM DSP数字信号处理库以及超简单的移植方法分享(2022-01-27)

    视频教程汇总帖:[学以致用,授人以渔]2022视频教程汇总贴,持续更新中,DSP更新到第4期,ThreadX更新到第3期,BSP驱动更新到第9期(2022-03-17) - STM32F429 - 硬 ...

  5. 安卓版炉石修改服务器,越南玩家自制炉石传说安卓版客户端 可能公开移植方法...

    炉石传说安卓版何时才能上线?相信这个一定是广大安卓炉友 关心的话题了.对此,暴雪早在今年年初就已提到:除了已经上架的iPad版外,对应安卓系统的炉石客户端也在紧密制作中,预计将会在年底上线. 凭什么苹 ...

  6. Spring Boot使用方法小札(3):应用启动后做一些事

    有时候我们需要在应用启动或者重启后做一些工作,比如删除一些临时文件或者Redis中的缓存,这在没有使用Spring Boot之前,在Spring框架下是通过ApplicationListener监听器 ...

  7. 一文搞懂网卡驱动的原理与移植方法

    1.网卡设备驱动原理 1.1 层次结构 Linux系统对网络设备驱动定义了4个层次, 这4个层次有到下分为: 1.网络协议接口层:实现统一的数据包收发的协议.该层主要负责调用dev_queue_xmi ...

  8. 一种通过刷写替换boot的方法

    写在前面的废话 众所周知,ECU软件包括BOOT和APP两部分,一般来说,boot是固化的软件,改动可能性很小,一般用来更新APP,但是,如果有一天boot真的需要更新呢,而且是大批量的更新,真的需要 ...

  9. TI CCS库函数开发最快的DSP工程移植方法

    最近在使用CCS的时候,需要移植TI提供的官方例程,但是发现官方例程所使用的芯片与项目选用的DSP型号并不相同,但是目前的TI DSP均使用DSP库函数开发,基于这一点,就想尝试能否用最快的方法实现例 ...

  10. cesm2(clm5.0)移植方法

    #武汉加油,浙江加油,中国加油!# 断断续续花了2个多月才把cesm2移植到centos6上,目前尚无cesm2完整的移植教程,在移植过程中也遇到了不少问题,所以在这里记录下,大致完整,但某些细节可能 ...

最新文章

  1. 您的用户界面是您产品不会因心灵感应而谦卑的补偿
  2. PHP HashTable总结
  3. strcpy和strncpy区别 memcpy strcpy strncpy lstrcpy lstrncpy wstrcpy, memmove
  4. 请求外部图片的时候,遇到403的错误的解决方案
  5. BaseActivity的抽取
  6. 用户分群模型:如何打造精细化运营基石?
  7. linux c 服务程序,Linux C 后台服务程序单进程控制
  8. 【dfs】【bfs】【链表】 求连通分量 (ssl 1759)
  9. 语言模拟蒲丰问题_R语言小数定律的保险业应用:泊松分布模拟索赔次数
  10. 第五节:Task构造函数之TaskCreationOptions枚举处理父子线程之间的关系。
  11. dependency 中的 classifier属性
  12. scandall pro找不到扫描仪_想要高清无色差的石材图片就得用扫描仪
  13. ARP,这个隐匿在计网背后的男人
  14. java计算机毕业设计疫情期间医院挂号管理系统源码+数据库+lw文档+系统+部署
  15. android自定义view设置背景颜色,Android View的几种背景颜色设置
  16. 基于区块链的知识共享框架-Aletheia
  17. 初中学历程序员面试被HR吐槽,初中学历还有要月薪3万5,到底是学历重要还是能力重要?...
  18. 【openMP并行计算】计算π
  19. update多表联合更新
  20. 13.Linux创建快捷方式

热门文章

  1. M2提示加载客户端版本信息失败的解决办法
  2. Extjs EditorGridPanel复选框实现单选, 同时锁住指定行
  3. ctfmon是什么启动项_Win7启动项找不到ctfmon进程无法正常使用输入法的解决方法...
  4. Netty集成WebSocket实现客户端、服务端长连接
  5. FlashCC导入使用greensock(TweenLite)包
  6. 第2次作业:微博软件分析
  7. 算法题15 穿越沙漠问题,飞机加油问题
  8. unity 2020可用NDK 下载地址版本为19.0.5232133
  9. robotframework-selenium2library-导入可选参数
  10. 【工具分享】画流程图工具Gliffy Diagrams