基于九鼎X210开发板移植2014.10版的U-boot
基于九鼎X210开发板来移植2014.10版的U-boot所做的笔记,希望大家互相学习共同进步。
kuensan
没有干货,只有记录,先会用,再深究。
展开
-
第一章:基于九鼎X210开发板移植2014.10版U-boot之初编译
写在前面: 由于九鼎X210开发板配套的uboot和kernel版本较低(uboot1.3.6,kernel2.6),为了能让开发板支持高版本的QT等软件,所以打算移植高版本的内核,那既然都打算移植高版本的内核了,所以索性移植一下高版本的uboot吧,这里选择了2014.10版的uboot。 断断续续花了大概一个多星期的时间,最近抽空整理了一下,就拿出来帖到论坛上好了。感原创 2018-02-05 14:25:36 · 836 阅读 · 0 评论 -
第二章:基于九鼎X210开发板移植2014.10版U-boot之修改配置
1、在正式修改代码前,先将之前编译过的代码清除干净。执行:make distclean 2、为了将来修改方便,我们需要配置一下我们修改板子的menuconfig,我们开发板使用的CPU是S5PV210,所以要找uboot中针对S5PV210或者S5PC110进行移植的作为参考,这里我们选择samsung的goni作为我们的base版。cp -arf board/samsung/原创 2018-02-06 21:02:03 · 533 阅读 · 0 评论 -
第三章:基于九鼎X210开发板移植2014.10版U-boot之尝试启动
得到编译好的uboot之后,就可以进行第一次尝试了。这里一开始我是使用tftp网络下载方式,先测试下编译好的uboot能否使用。到了后面就不能使用这种方式,因为再次初始化DDR后会导致DDR中储存的数据丢失,当然,如果初始化DDR的时候做了特殊处理的话(即判断要不要初始化),那应该就没关系了。这里我在后期是直接用sd卡来启动的,就没再用tftp下载方式了。 将编译好的uboot下载到指定的链接原创 2018-02-06 21:18:08 · 627 阅读 · 0 评论 -
第四章:基于九鼎X210开发板移植2014.10版U-boot之使用sd卡启动
start.S是所有armv7架构的cpu共用的,在start.S中的应该都不需要太多的改动。分析到下面,对uboot有了解的朋友,应该都知道这几个函数主要干嘛的 cpu_init_cp15:对cp15寄存器进行初始化的,这个不去动它。 cpu_init_crit:分析进去这个函数,可以发现最后它调用的就是我们板级目录下的lowlevel_init.S文件,这个得好好改改。 _main原创 2018-02-06 22:10:53 · 615 阅读 · 0 评论 -
第五章:基于九鼎X210开发板移植2014.10版U-boot之初始化内存
走到现在,停下来想一下,uboot的bl1阶段最大的使命就是初始化ddr,好让后面的大部队有充足的内存可以挥霍,所以下一步就需要好好看看和ddr相关的东西。 接着定位到lowlevel_init,看完之后发现里面有一个internal_ram_init,这个是DDR初始化?往下看发现,代码就那么几行,心里就大概清楚肯定不是DDR初始化了。 (ps:嵌入式开发中,内存的硬件设计和软件设计应该原创 2018-02-06 22:30:37 · 521 阅读 · 0 评论 -
第六章:基于九鼎X210开发板移植2014.10版U-boot之重定位
那么内存初始化完成后,要做的就是将bl2的代码拷贝到内存中去了,原版的uboot在arhc/arm/lib中crt0.S的relocate_code来对代码进行拷贝,但我们不使用这个(原因是我们的uboot放在nand和sd卡中,需要使用另一种方法来对代码进行拷贝),一如既往使用开发板的程序,移植过来。 重定位的地方就定在了lowlevel_init之后main之前。 代码过长,就不贴原创 2018-02-06 22:46:13 · 412 阅读 · 0 评论 -
第七章:基于九鼎X210开发板移植2014.10版U-boot之初始化时钟模块
重新烧录,启动,发现可以正常执行,然后卡死在DRAM之后,还打印出了一个O,这个O看起来挺熟悉的,开机时候打印的那个O?一下子就想到,我们虽然自己移植的那个重定位代码(拷贝BL2到内存中),但原版代码中应该也有一份,要将它移除。 首先定位到DRAM是由board.c中的board_init_f函数调用display_dram_config打印出,board_init_f函数被c原创 2018-02-06 23:16:19 · 461 阅读 · 0 评论 -
第八章:基于九鼎X210开发板移植2014.10版U-boot之初始化网卡
接下来就要开始处理网卡相关的了,这样我们才能挂载网络文件系统,使用tftp服务器之类的,但是很不幸,2014.10版本的uboot里面没有支持我们的开发板上的网卡。所以接下来要手动移植网卡相关的程序。 首先查找网卡初始化的代码/arch/arm/lib目录下的board.c中的board_init_r函数可以看到有设置,那就需要在/include/config目录下的x210.h下追加#def原创 2018-02-06 23:33:29 · 617 阅读 · 0 评论 -
第九章:基于九鼎X210开发板移植2014.10版U-boot之启动内核
接下来要启动内核了。首先要先将机器码设置成我们开发板的机器码,将/board/Samsung/x210目录下的x210.c中的board_init函数中的bi_arch_number传入MACH_TYPE_SMDKV210,传入正确的机器码才能启动内核。 但事实上,无论怎么样都启动不了内核,我用tftp下载了之前编译好的内核,内核格式是zImage的,使用bootm来启动,发现启原创 2018-02-06 23:44:11 · 671 阅读 · 0 评论