《Atheros AR7242 + AR8328 U-Boot 移植总结》
在嵌入式系统开发中,U-Boot作为引导加载程序起着至关重要的作用,它负责初始化硬件,加载操作系统内核,并提供交互式命令行环境。本文主要探讨了在Atheros AR7242和AR8328芯片组上移植U-Boot的过程,这是一项复杂且细致的工作,涉及到多个步骤和配置文件的修改。
针对7242平台选择的board type是pb9x。在/wlan/plc/sdk-9.2.0.128/build/scripts/pb9x目录下的config.pb9x文件中,需要进行两个关键的改动。一是取消uboot的压缩模式,将`#export COMPRESSED_UBOOT=1`注释掉,改为`export COMPRESSED_UBOOT=0`。二是设置flash大小,将`export FLASH_SIZE=16`,确保足够的空间用于存储U-Boot和文件系统。
需要在pb9x.h文件中添加针对AR7242和AR8328的配置。例如,添加`#define CONFIG_ATHRS17_PHY`和`#define CFG_ATHRS26_PHY`,这两个宏定义是为了识别和配置AR8328交换芯片。
接下来,进入/wlan/plc/sdk-9.2.0.128/boot/u-boot/board/ar7240/pb9x目录,修改makefile文件,使编译时包含athrs17_phy.c文件。这是因为AR8328在该平台上表现为PHY设备,因此需要对其进行初始化。
在athrs17_phy.c文件中,我们需要添加针对AR8328的初始化代码。定义`SWITCH_CHIP_8328`为1,然后调用`athrs17_reg_init()`函数,根据数据手册来设置相关寄存器。这个函数通过`athrs17_reg_write()`来写入特定地址,以确保交换芯片正常工作。
此外,还发现了在GPIO Function (GPIO_FUNCTION_1)函数的初始化问题。原始代码可能会影响到某些保留功能,因此需要更新`ar7240_gpio_config()`函数,确保寄存器中的保留位保持默认值。原始代码会启用eth Switch LEDs,但我们需要修改为只开启特定LED,如`ar7240_reg_wr (AR7240_GPIO_FUNC, (ar7240_reg_rd(AR7240_GPIO_FUNC) | 0x08));`
完成以上步骤后,通过执行`make uboot BOARD_TYPE=pb9x`命令进行编译。成功编译后,生成的U-Boot二进制文件可以烧录到硬件的flash中。启动时,系统将会运行移植后的U-Boot,显示启动信息,此时标志着移植过程的完成。
U-Boot移植是一个涉及硬件初始化、驱动配置、编译和调试的综合过程。每个环节都至关重要,需要对底层硬件和软件有深入理解。通过以上步骤,我们可以看到在AR7242和AR8328平台上的移植不仅包括了对硬件特性的理解和适配,也包含了对源代码的修改和优化,以确保U-Boot能够正确地与硬件交互并引导操作系统。
- 1
- 2
前往页