PLC平台移植u-boot-2016.07问题与解决

需积分: 9 3 下载量 140 浏览量 更新于2024-09-10 收藏 370KB DOCX 举报
"uboot201607移植记录" 在本文中,作者记录了将u-boot 2016.07版本移植到PLC平台上的过程,特别是针对9x25网络控制器的配置。以下是移植过程中的关键步骤和遇到的问题。 首先,对于u-boot源代码的`include/configs/at91sam9x5ek.h`文件,进行了以下修改: 1. 定义了`CONFIG_MACB1`,这是为了支持平台上的第二个网卡(MACB1)。 2. 同时定义了`CONFIG_NET_MULTI`,启用多网络接口支持。 接着,修改了启动参数`CONFIG_BOOTARGS`,以适应新的内存分配和文件系统需求: - `mem=128M`指定了128MB的内存大小。 - `console=ttyS0,115200`设置了串口控制台在ttyS0端口,波特率为115200。 - `mtdparts=atmel_nand:`定义了MTD(Memory Technology Device)分区。 - `8M(bootstrap/uboot/kernel)ro`指定了8MB的空间用于引导程序、u-boot和内核,并设置为只读。 - `-(-rootfs)`剩余的空间分配给根文件系统。 - `root=/dev/mtdblock1rw`设置了根文件系统位于mtdblock1,且为读写模式。 - `rootfstype=ubifs`指定了根文件系统的类型为UBIFS(Unsorted Block Image File System)。 - `ubi.mtd=1root=ubi0:rootfs`定义了UBI设备为mtd1,根文件系统挂载在ubi0的rootfs分区。 然后,增大了`CONFIG_SYS_MALLOC_LEN`的值,这是为了确保在ubi初始化过程中有足够的内存分配。默认值可能导致了"ubiiniterror=-12"的错误。 此外,还添加了环境变量以配置网络设置: - `CONFIG_IPADDR`:设定了PLC的IP地址为192.168.99.123。 - `CONFIG_SERVERIP`:配置了服务器IP地址为192.168.99.100。 - `CONFIG_NETMASK`:设定了子网掩码为255.255.255.0。 - `CONFIG_GATEWAYIP`:配置了网关IP为192.168.99.1。 - `CONFIG_ETHADDR` 和 `CONFIG_ETH1ADDR` 分别定义了两个以太网接口的MAC地址。 接着,对MTD设备和分区进行了配置: - `MTDIDS_DEFAULT` 指定了名为“nand0”的MTD设备。 - `MTDPARTS_DEFAULT` 配置了MTD分区,包括8MB的boot分区和剩余的rootfs分区。 在移植过程中,还需要对`Makefile`进行相应的调整,以适配新平台和配置。通常这包括修改目标架构、编译选项等。 最后,通过运行`makemenuconfig`命令来生成或更新配置文件。在这个例子中,作者可能使用了`make at91sam9x5ek_nandflash_defconfig`命令来加载默认配置,然后根据需求进行了自定义。 这个过程展示了u-boot移植时涉及的多个方面,包括硬件驱动的适配、内存管理、网络配置、文件系统设置以及编译构建流程。这些详细记录有助于未来类似移植工作的参考和复用。