接上一贴:uboot成功移植到STM32F103ZET6(硬件资源说明)
uboot成功移植到STM32F103ZET6(硬件资源说明)_佛山林峯的博客-CSDN博客_stm32 uboot

软件平台:IAR for ARM 7.70
硬件主板:浩宇电子STM32F103ZET6最小系统板
STM32库:HAL库
uboot版本:1.1.6
参考uboot代码:TQ2440开发板

第一步:
移植前必须着手准备一个调试好的STM32环境,比如我的工程上层应用只保留了最基础的main.c。
硬件底层驱动只用到4个,分别是定时器2,串口1,LED,NOR Flash和SRAM。必须要保证这些驱动能够完美运行哦!

第二步:
拷贝uboot用到的主要文件,这个要根据自己使用到的功能来修改,本渣用到uboot的功能不多,所以暂时只拷了以下一些文件:

第三步:
      分析uboot的基本架构组成,正常来讲应该是有两大阶段,第一阶段是跟CPU相关的一些初始化,比如S3C2440芯片需要分配中断使用的堆栈、关看门狗、设置时钟分频、初始化堆栈、代码重定位等等一系列操作。第二阶段总的来说主要是跑C语言代码,最终目的是引导Linux Kernel。
      回过头来分析下STM32,由于我们习惯使用MDK或者IAR来开发,尤其是使用了ST公司提供的库文件,因此对于STM32而言第一阶段基本是不需要开发者操心的。再分析第二阶段,STM32没办法跑Linux,不过可以跑我们常用的uCOS、FreeRTOS、RT-Thread等RTOS,也可以裸跑,基本跟我们用bootloader跳转到APP的操作一致,所以我们的最终目的是把uboot做成MCU常用的bootloader,不过是特殊一点的bootloader,因为我想把uboot引导APP在RAM上运行的功能保留下来,这样能避免用户频繁烧flash。
      上面提到STM32的第一阶段基本是MDK或者IAR平台帮我们解决了,但是还没有解决完所有的问题,其中一个是全局变量gd,在2440平台上把GD指针存放在通用寄存器R8里面:
#define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("r8")      /* 定义寄存器r8作为结构体gd_t指针gd */
还有个问题是uboot的内存分布引起的


uboot上的代码段、数据段、BSS段都是要重定位到SDRAM上跑的,只有这样数据段的数据才能实现随机修改。
STM32虽然可以在NOR Flash上跑uboot,不过如果像ARM9那样把代码重定位到SRAM,仿真就会失效!
本渣是希望尽可能保留uboot代码在MCU内部的flash上跑,这样比较有助于初学者能跟踪代码。

好了,下一篇文章正式开始从代码处着手分析移植!^_^

uboot成功移植到STM32F103ZET6(一)相关推荐

  1. uboot成功移植到STM32F103ZET6(二)

    接上一贴:uboot成功移植到STM32F103ZET6(一) 软件平台:IAR for ARM 7.70 硬件主板:浩宇电子STM32F103ZET6最小系统板 STM32库:HAL库 uboot版 ...

  2. 图像识别DM8127开发攻略——UBOOT的移植说明

    图像识别DM8127开发攻略--UBOOT的移植说明 根据前几篇文章的介绍,想必大家对DM8127软件架构有了全局的认识,下面我们从开发的角度进行裁剪移植最基本的BOOT软件包,嵌入式开发人员拿到一个 ...

  3. uboot的移植——移植uboot官方的uboot到x210开发板

    以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除. 参考内容 uboot--官网下载直接移植(一) - biaohc - 博客园 uboot--官网下载直接移植(二) - biaohc - ...

  4. ARM uboot 的移植3 -从 uboot 官方标准uboot开始移植

    一.选择合适的官方原版 uboot 1.官方原版 uboot 的版本 (1) 版本号.刚开始是 1.3.4 样式,后来变成 2009.08 样式. (2) 新版和旧版的差别.uboot 的架构很早就定 ...

  5. 嵌入式uboot移植之从uboot官方移植

    注:以下内容来自朱老师物联网大讲堂课件 1. 选择合适的官方原版uboot 1.1 官方原版uboot的版本 (1)版本号.刚开始是1.3.4,后来变成2009.08 (2)新版和旧版的差别.uboo ...

  6. 《11.uboot的移植-从三星官方uboot开始移植》

    转自 https://edu.csdn.net/lecturer/505 朱老师物联网大讲堂 <11.uboot的移植-从三星官方uboot开始移植> 第一部分.章节目录 2.11.1.移 ...

  7. 《11.uboot的移植1-从三星官方uboot开始移植》

    转自 https://edu.csdn.net/lecturer/505 朱老师物联网大讲堂 <11.uboot的移植1-从三星官方uboot开始移植> 第一部分.章节目录 2.11.1. ...

  8. STM32MP157 Linux系统移植开发篇4: BootLoader(Uboot)移植

    本文章为<STM32MP157 Linux系统移植开发篇>系列中的一篇,笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板).stm32mp157是ARM双核,2 ...

  9. U-Boot的移植U-Boot Practically Porting Guide(转)

    本文转自:http://blog.csdn.net/hongkaicsu/article/details/5187015 U-Boot的移植之(一)基础篇:添加新的目标板定义 本文使用最新的U-Boo ...

最新文章

  1. Xamarin.Forms中为WebView指定数据来源Source
  2. 前段第44天------前端、前端三剑客、HTML
  3. python查看函数参数,在python函数中获取参数名称列表
  4. 人工智能算法--KNN算法(C++实现)
  5. Laravel框架与ThinkPHP一些不同点
  6. css画横线箭头_2020年你应该关注这50款前端热门工具:CSS HTML 工具篇
  7. 包含contains
  8. Java中的CopyOnWrite
  9. jvm(2)-JVM内存的设置(解决eclipse下out of memory问题)
  10. 第五百一十八天 how can I 坚持
  11. python insert_Python列表| 带示例的insert()方法
  12. 4月6日米粉节:小米手机新一轮10万台开放购买
  13. 运筹学与计算机知识,计算机、数学、运筹学等领域的36个重要算法
  14. PHP——下载图片到本地代码
  15. IDEA 等常用编程软件注册码集合
  16. nginx反向代理实现指定接口访问指定机器
  17. 快速清除字符串边上的空格
  18. 哈希算法(哈希函数)的基本使用
  19. miceforest插补
  20. 儿时的情怀除了教材的封面和王心凌的《爱你》,还有证件照上的红领巾和马尾辫

热门文章

  1. 人工智能之数学基础----指数函数和对数函数
  2. 幸福人生讲座(七):怎样引导孩子立志
  3. 电脑插上耳机后有嗡嗡的声音
  4. 【Android基础】setTextColor(),setBackgroundColor的参数设置方式
  5. Apple Tree(树状数组)
  6. WARN [Producer clientId=console-producer] Connection to node -1 could not be established.
  7. Day10 面向对象 、类和对象的关系
  8. php hs256加密,JWT签名算法中HS256和RS256有什么区别
  9. Python基础第十六天:面向对象进阶
  10. C语言程序设计第6章节练习题