[project X] tiny210 uboot移植进度说明
这份移植进度是当时在project X项目移植对应版本上的uboot到tiny210上的时候写的。
现在回过头来,想要整理一些uboot的移植心得和学习笔记,所以先把当时的移植进度发出来,方便后续文档整理的思路。
零、项目说明
project X项目是由wowo发起的,希望能够在一个项目中可以支持多个板子的项目。
在wowo的project X项目上对友善之臂tiny210的板子进行支持。
目前已经可以正常启动到kernel commandline部分。
暂时只使用SDcard作为存储设备,后续会对nand flash进行支持。
欢迎有tiny210或者其他板子的同学也一起参与到这个项目来,让project x项目支持更多的板子。
一、移植进度说明
本次移植基于project-x使用的uboot来进行移植。
本次移植参考了kangear的移植,在这里向这位大神致敬。
7月23日以前。
- 前期做一些准备工作,包括搭ubuntu环境,弄板子,下project-x的代码,找一些相关资料。git库操作的学习。
尝试在ubuntu环境下编译过project-x的代码。
第一次添加tiny210 board支持失败,在wowo的指导下发现关于tiny210的一些CPU配置搞错了,应该是armv7并且可以使用machine s5pv1xx. - 进展:环境和代码都已经搞定,板子也已经到位。
- 后续任务:继续尝试添加tiny210 board并且编译成功。(7.23-7.27完成)
- 前期做一些准备工作,包括搭ubuntu环境,弄板子,下project-x的代码,找一些相关资料。git库操作的学习。
7.23-7.27——需要整理文档
- 第二次添加tiny210 board支持,使用arm-linux-gcc4.5编译器,逐步解决编译问题(有一部分修改内容是参考kangear的代码)。
上传到自己的git hub分支上。 - 注意:目前的修改有一些纯粹就是为了解决编译错误,不管代码的内容,后续移植过程中需要对这些内容进行fix。
- 进展:初步添加到tiny210 board支持到project-x的项目上,并且编译成功。创建了一个tiny210的分支专门用于维护tiny210的代码。
- 后续任务:
1、测试板子,安装好各种驱动,用kangear的uboot测试能否正常启动。熟悉一下sdcard启动uboot的步骤。(7.30完成)
2、搞清楚s5pv210的启动流程,BL0-BL1(uboot-spl)-BL2(uboot)。(7.29完成)
- 第二次添加tiny210 board支持,使用arm-linux-gcc4.5编译器,逐步解决编译问题(有一部分修改内容是参考kangear的代码)。
7.29——需要整理文档
- 根据文档和资料搞清楚了s5pv210的启动流程,简单结合文档看了一下arrmv7的uboot-spl的流程。
http://blog.csdn.net/linuxarmsummary/article/details/44836293
http://www.cnblogs.com/zhangpengshou/p/3617800.html - 注意:上述网站代码和project-x中armv7的代码有差异,需要结合代码自己整理一遍流程,思考一下uboot-spl“点LED灯”的代码应该加在什么位置。
- 进展:大致整明白了armv7-uboot-spl的流程。(armv7的uboot-spl使用位置无关代码的方式)
- 后续任务:
1、结合project-x的代码来分析uboot-spl的流程。
2、让自己编译的uboot-spl也可以正常在tiny210中跑起来,通过点亮LED来观察是否跑起来了。(7.30完成)
- 根据文档和资料搞清楚了s5pv210的启动流程,简单结合文档看了一下arrmv7的uboot-spl的流程。
7.30
- 测试tiny210板子,安装好各种驱动,编译了kangear的uboot,在tiny210的板子上测试kangear的uboot正常启动。
熟悉一下sdcard启动uboot的步骤。 - 进展:
1、kangear的uboot可以正常在tiny210中启动,后续在在tiny210上移植uboot,可以参考kangear的uboot来进行。
2、成功的让project-x项目的uboot-spl在tiny210中跑起来了,很残暴的在_main中直接去点亮LED测试了一下。 - 后续任务:
1、在正常的board.c中去点亮LED。(8.3完成)
2、实现串口输出log。(8.15完成)
- 测试tiny210板子,安装好各种驱动,编译了kangear的uboot,在tiny210的板子上测试kangear的uboot正常启动。
7.31
- 因为该版本uboot上已经添加了s5pv210的gpio的一些配置的API,在s5p_gpio.c。
但是要编译通过这个函数需要使能FIT的部分,也就是要打开device_tree的功能。
所以就先简单移植tiny210的device tree. - 进展:
1、移植device tree成功。
- 因为该版本uboot上已经添加了s5pv210的gpio的一些配置的API,在s5p_gpio.c。
8.3
- uboot-spl太小,无法编译进s5pc110原来的gpio.o。所以无法使用标准的gpio_cfg_pin来点亮LED。只能直接操作GPIO的寄存器来实现。
- 进展:在board.c中点亮LED。完善通过LED实现的tiny210_early_debug操作。
- 后续:
因为在spl中实现串口输出意义不大。先移植DRAM的代码。
1、研究kangear中DRAM的初始化和BL2的img的copy过程。(8.7-8.10)
2、实现DRAM的初始化(8.10,写了一篇文档来代替,基本上搞清楚了)
3、实现BL2的img的copy过程(8.11完成) - 几个重点关注问题
(0)可以先尝试把kangear关于ddr的部分先移植过去再说。(8.6完成)
(1)BL1中DRAM初始化的过程
_start——》reset——》cpu_init_crit——》lowlevel_init——》实现一些底层的初始化,包括DDR的初始化。(8.4完成)
(2)BL1中copy BL2到DRAM的流程(8.11完成)
(3)如何验证是否初始化成功?是否copy成功?
初始化完DDR之后尝试往DDR写入一个值,然后再读出来,如果读出来的值和写入的值一样,就说明初始化成功。(8.6完成)
8.6
- 直接移植kangear的ddr初始化代码成功。
- 进展:移植kangear的ddr代码到project-x项目中,使用直接写一个DDR地址之后再从这个地址里面读出来,发现值是对的。所以DDR的初始化应该是成功的。
8.7-8.10——需要整理文档(已整理)
- 进展:研究了s5pv210的DDR硬件结构,地址映射方法,初始化流程以及一些参数的设置
根据原理图、datasheet和代码整理了文档《tiny210 ddr文档》。
- 进展:研究了s5pv210的DDR硬件结构,地址映射方法,初始化流程以及一些参数的设置
8.11——需要整理文档(已整理)
- 进展:参考kangear的代码实现了BL1中copy BL2到DRAM的流程。
并且用kangear可以正常使用的uboot测试了一下。
弄清楚了整个copy的流程和原理。并整理了文档《从SDCARD加载到dram中》。 - 后续:
1、研究uboot的编译过程和运行过程(可以从Makefile入手)(8.12完成)。
2、使用自己编译通过的uboot,可以成功在DRAM上面跑起来(8.11完成)。
通过在_start点亮三个灯并用b xys_loop死循环之后,可以判断uboot.bin已经开始执行了。
- 进展:参考kangear的代码实现了BL1中copy BL2到DRAM的流程。
8.12——需要整理文档
- 进展:1、大致搞清楚了uboot的启动和uboot-spl的启动的差异。
弄明白了global data的原理、地址和使用等等。
uboot和uboot-spl的堆栈的设置。
2、定位到serial_init导致程序uboot不断重启,屏蔽掉之后就没事了 - 疑问:uboot-spl中把sp设置错了(也就是堆栈设置错了),但是C函数还是可以正常调用。
原因:因为编译器对于C函数的汇编进行了优化,没有使用push和pop指令,所以不需要使用到堆栈。 - 后续:1、解决掉serial_init导致重启的问题(8.15完成)
2、使串口正常使用(8.15完成)
- 进展:1、大致搞清楚了uboot的启动和uboot-spl的启动的差异。
8.15
- 进展:1、解决开机过程中不断重启问题。
两个原因导致,1、dts节点中serial的配置问题 2、CONFIG_OF_TRANSLATE使能之后导致的DTS解析错误的问题。
2、串口已经可以正常打印log了。 - 后续:1、研究一下s5pv210的串口驱动代码。
2、继续完善一些初始化的东西,包括dram_init等等(08.18完成)
3、启动到命令行的位置(08.18完成)
- 进展:1、解决开机过程中不断重启问题。
8.18——需要整理文档
- 进展:1、学习了下relocation过程uboot大小的计算(bss_end-_start)
学习了下relocation的过程
2、使能DEBUG来打印debug()函数的log
3、对dram_init的补充
4、屏蔽掉一些函数之后uboot正常启动到了命令行模式。
屏蔽了nand_init(); initr_nand, initr_mmc,initr_env, - 后续:1、文档的整理《relocation》、《board_init_f》、《board_init_r》等等
2、对上述屏蔽掉的函数进行补充和修正(08.20完成)。
- 进展:1、学习了下relocation过程uboot大小的计算(bss_end-_start)
8.20
- 进展:1、修正屏蔽了nand_init(); initr_nand, initr_mmc,initr_env的问题
2、看project-x中移植kernel的方法,学习研究中。
3、查找了一下后续在tiny210中移植kernel的文档,以便后面学习参考。 后续:1、针对tiny210添加一个配置,使其能够编译通过。(08.22完成)
接下来就是kernel移植的部分,已经整理到《tiny210 kernel移植进度说明》中
- 目前任务:针对tiny210添加一个配置,使其能够编译通过。
- 目前问题:
- 目前的一些想法:因为uboot的比较简陋,nand flash还不支持,可以直接在SD卡中刷入kernel。另外,可以直接使用一个没有压缩的kernel,暂时不考虑参数的问题,直接将其拷贝到RAM上,然后直接跳转过去进行点灯。先保证kernel可以正常跑入。(08.22完成)
- 进展:1、修正屏蔽了nand_init(); initr_nand, initr_mmc,initr_env的问题
[project X] tiny210 uboot移植进度说明相关推荐
- [学习资料] Tiny210(S5PV210) u-boot移植
Tiny210(S5PV210) u-boot移植 http://www.microoh.com/bbs/forum.php?mod=viewthread&tid=254&fromui ...
- 主线剧情03-NXP-i.MX系列的u-boot移植基础详解
u-boot 移植基础详解 本文系广泛撷取.借鉴和整理(相关的内容在网络上有很多,但很多相互抄,或者是版本太老,或者就是不通用的非常有平台针对性的步骤,碎片化泛滥,甚至就是有待分拣的垃圾厂,当然也有一 ...
- I.MX6ULL 官方 U-Boot 移植系列教程 1 —— 前期准备
文章目录 前言 一.搭建开发环境 二.获取官方资料 1. 获取官方开发板资料 2. 获取官方 U-Boot 源码 总结 前言 去年入手了一块正点原子的 I.MX6U-ALPHA 开发板,跟着其配套的指 ...
- X-007 FriendlyARM tiny4412 u-boot移植之内存初始化
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- 三星官方smdkv210 uboot移植到我的s5pv210开发板
北京 2020-7-26 19:44 周日 昨天外面闷热 今日凉快.空调一开啥事没有!O(∩_∩)O 用了差不多两个周末蹲家里移植的.进度比较慢,算是把uboot相关的一些东西基本了解了. uboot ...
- [project X] tiny210(s5pv210)上电启动流程(BL0-BL2)
建议参考文档: S5PV210-iROM-ApplicationNote-Preliminary-20091126 S5PV210_UM_REV1.1 项目介绍参考 [project X] tiny2 ...
- u-boot移植到mini2440,u-boot版本2008.10
这篇文章写于2008.12.28日,主要记录了我移植u-boot-2008.10的过程,并附上了移植好的patch文件.移植好的u-boot-2008.10适用友善公司的mini2440和阳初公司的y ...
- U-Boot移植教程之二:移植
内容来自 韦东山<嵌入式Linux应用开发完全手册> 一.U-Boot移植 开发板smdk2410的配置适用于大多数S3C2410单板,或是只需要极少的修改即可使用.但是目前U-Boot中 ...
- u-boot移植重要问题说明
u-boot移植重要问题说明 一.从SD卡拷贝BL2到内存的函数 函数名字叫copy_uboot_to_ram,位置在board/samsung/real210/mmc_boot.c 其中有这个一部分 ...
最新文章
- 第十课.简单文本分类
- 也谈压缩感知和贝叶斯大脑
- 前端基础入门第一阶段-Web前端开发基础环境配置
- python哈夫曼编码注意_Python 算法(2) 哈夫曼编码 Huffman Encoding
- 小师妹学JavaIO之:try with和它的底层原理
- js声明变量的三种方式
- markdown单元格快速合并(不用自己写html代码)
- c#屏幕录制(经典)(含源码和AForge.Video.FFMPEG.DLL)及填坑办法
- 内存泄漏Valgrind
- Java面试题-框架篇九
- RESTful中不同HTTP请求类型的含义
- 【混音教程】开启你的混音生涯的6个心法|MZD Studios
- CREO学习笔记【钣金结构中常用的标准件】
- PHP 图片转PDF
- 解决win10分辨率过高导致某些软件显示小的办法
- mysql user.myd_“./mysql/user.MYD”未找到(ERRCODE:13 - 拒绝权限)
- Pyspark特征工程--RFormula
- 视觉在机器人领域的应用
- 程序人生(四):洋哥差点被开除的经历
- redhat 中使用更改yumy源为centos的163源