移植uboot到powerpc(1)--配置头文件,u-boot,ppc ,mpc85 mpc83

【转帖请注明出处:blog.csdn.net/lanmanck】

 

这里以mpc83x为例。uboot1.3.2,ddr2-128m,位于0x00000000;启动flash512k-8bit,位于0xfff00000处。

其实每个powerpc出厂前飞思卡尔都做好开发板了。就是说uboot和kernel都是现成的。

这里说的移植,应该比ic厂商的软件工程师轻松点,毕竟是在他们的基础上做的,呵呵。

 

首先打开配置头文件,include/configs/mpc8323erdb.h,把不需要的去掉,比如我这里是pci不要。

 

1》配置immr基址:#define CFG_IMMR        0xE0000000

这个基本上是死的,至于为何要重新配置,大家就要看看powerpc的架构和启动方式了。

2》配置ddr相关数据:#define CFG_DDR_BASE        0x00000000

把ddr寄存器配置为你实际接的大小,这个跟ddr大小、布线都有关系。可以先用仿真器试出来你的ddr是否好用。比如这几个:

#define CFG_DDR_SIZE        128    /* 我们的是128MB ,原来64MB*/
#define CFG_DDR_CS0_CONFIG    0x80010102
#define CFG_DDR_TIMING_0    0x00220802   
#define CFG_DDR_TIMING_1    0x26276222   
#define CFG_DDR_TIMING_2    0x0f9828cf    

3》关于CFG_MONITOR_BASE

这个宏定义很不好理解,实际上就是uboot自己在flash的起始地址,因为我们有时候要调试uboot,所以老外就称之为monitor。文化不同,真是费解啊。

一般是这样定义的:

#define CFG_MONITOR_BASE    TEXT_BASE        /* =0xFFF00000 */

#if (CFG_MONITOR_BASE < CFG_FLASH_BASE)
#define CFG_RAMBOOT
#else
#undef  CFG_RAMBOOT /*说明没有定义这个,不从内存启动*/
#endif

其中,text_base就是代码段地址,也就是你烧入uboot的地址,他在board/freescale/mpc8323erdb/config.mk定义。

CFG_FLASH_BASE也是flash地址,与text_base一样。

那cfg_ramboot什么意思,我跟了下代码,加上定义名字的理解,应该是在内存直接运行的意思。这个应该是从仿真器直接下载uboot到内存有关系吧。不过以前调试arm的时候也没这么麻烦,直接就跑了。这个应该跟架构有关系。

但是注意,flash地址也是变的,下面会讲到 。这个搞得这么复杂只好问飞思卡尔那帮家伙了。大家都那么难理解,估计他是不想卖啊。

4》关于CFG_MONITOR_LEN

#define CFG_MONITOR_LEN        (256 * 1024)

这个就是uboot的大小,个人认为是多此一举。把它设大点就行了。

5》配置flash参数

我用的是SST39VF040=512kx8 bit,不是cfi接口,而是jetec接口的。所以还要多加2个定义:

#define CONFIG_FLASH_CFI_LEGACY
#define CFG_FLASH_LEGACY_512Kx8

当然,他还需要调用cfi接口函数,所以cfi的不能省略。

添加CONFIG_FLASH_CFI_LEGACY后要手动添加一个函数:

ulong board_flash_get_legacy (ulong base, int banknum, flash_info_t * info)。实现代码网上有,很短,我就不贴了。

把它放到board/freescale/mpc8323erdb/mpc8323erdb.c即可。

另外,配置#define CFG_FLASH_SIZE        1,这个宏以MB为单位,我的是512k,只能配为1M,这个没有关系。后面会看到,他最少会认为是1MB(老外比较有钱,不考虑成本)

6》接下来就是接启动flash的cs0的配置了:

#define CFG_LBLAWAR0_PRELIM    0x80000013    /* 1MB window size 这个不知道可不可以配多点*/

#define CFG_BR0_PRELIM    (CFG_FLASH_BASE |    /* Flash Base address */ /
            (1 << BR_PS_SHIFT) |    /* 1=8 bit port size,2=16bit 改成自己的即可*/ /
            BR_V)

#define CFG_OR0_PRELIM        0xfff06ff7    /* 这个也要根据flash大小配置*/

先到此为止,以后接着讲启动过程。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Rockchip RK3566是一款由Rockchip推出的高性能应用处理器,其集成了四核ARM Cortex-A55 CPU和ARM Mali-G52 GPU。在移植U-Boot 2023.04时,我们需要考虑以下几个方面的工作: 1. 了解RK3566芯片的硬件架构和技术规格,包括处理器核心、内存控制器、外设接口等。这将有助于理解U-Boot如何与硬件交互,并进行相应的配置。 2. 下载并准备U-Boot 2023.04的源代码。在Rockchip官方网站或开源社区中可以找到最新的U-Boot源代码。将其下载并解压到开发机上。 3. 设置交叉编译环境。因为U-Boot是一个跨平台的项目,所以需要配置适合RK3566的交叉编译器,确保能够正确编译U-Boot源代码。 4. 配置U-Boot。根据RK3566的硬件架构和技术规格,需要进行相应的配置,包括处理器、内存、外设等设置。这些设置在U-Boot配置文件中进行,可以根据需求进行修改。 5. 编译U-Boot。在配置U-Boot后,使用交叉编译器编译U-Boot源代码。编译完成后,将生成的U-Boot二进制文件烧录到RK3566的启动设备上,如eMMC或SD卡。 6. 测试U-Boot。将准备好的启动设备插入RK3566开发板中,根据开发板的启动方式,进入U-Boot命令行界面。在命令行界面中可以进行各种操作和调试,如加载内核、启动操作系统等。 7. 调试和优化。在移植和测试U-Boot过程中,可能会出现一些问题和不稳定的情况。需要通过调试和优化来解决这些问题,确保U-Boot的正常运行和稳定性。 总之,移植U-Boot 2023.04到Rockchip RK3566需要了解芯片的硬件架构和技术规格,配置和编译U-Boot源代码,进行测试和调试。这样可以确保U-Boot能够与RK3566正常交互,并为后续的操作系统加载和启动提供基础支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值