标签:行操作 ext size lan model tom roo shu dhcp
当前版本的 uboot 中肯定是已经没有 S3C24x0 这种老芯片了,我们需要找一份稍为 old 一点的 u-boot 将 s3c24x0 有关的文件都添加进来。
文件或目录 | 作用 |
./arch/arm/cpu/arm920t/s3c24x0 | s3c24x0 芯片相关的启动代码 |
./arch/arm/include/asm/arch-s3c24x0 | s3c24x0 系列寄存器等定义 |
./board/samsung/smdk2410 | 开发板的初始化文件,之后会以这个文件为模板修改为 2440 |
./configs/smdk2410_defconfig | 开发板配置文件,之后会进行修改,生成 2440的默认配置文件 |
./drivers/gpio/s3c2440_gpio.c | 2440 的 gpio 驱动文件 |
./drivers/i2c/s3c24x0_i2c.c ./drivers/i2c/s3c24x0_i2c.h |
i2c 的驱动文件,暂时不需要移植过去,当前u-boot 中存在,不过代码有差异 |
./drivers/mmc/s3c_sdi.c | S3C24xx SD/MMC 驱动 |
./drivers/mtd/nand/s3c2410_nand.c | s3c2410 的 nand 驱动,移植到 ./drivers/mtd/nand/raw 目录下 |
./drivers/rtc/s3c24x0_rtc.c | rtc 驱动,已经有了 |
./drivers/serial/serial_s3c24x0.c | 串口驱动,先移植进来 |
./drivers/usb/gadget/s3c_udc_otg.c ./drivers/usb/gadget/s3c_udc_phy.c ./drivers/usb/gadget/s3c_udc_xfer_dma.c ./drivers/usb/host/ohci-s3c24xx.c ./drivers/usb/host/ohci-s3c24xx.h |
USB 驱动,先移植进来 |
./include/configs/smdk2410.h |
板载配置文件 |
当前所添加的文件就是这些。下面进行开发板的添加。
cd board/samsung/
mv smdk2410 jz2440
cd jz2440
mv smdk2410.c jz2440.c
board/samsung/jz2440.c 修改
在 arch/arm/include/asm/mach-types.h 中给我们定义了一个s3c2440 和 SMDK2440 的宏,这两个宏是板子的 ID,用这个两个宏都可以
将 MACH_TYPE_SMDK2410 改为 MACH_TYPE_JZ2440,同时在此文件中定义一个宏 MACH_TYPE_JZ2440。
修改 board/samsung 下的 Makefile 和 Kconfig:
修改完此处后,需要在 arch/arm/Kconfig 中导入这个块板:
修改完后,执行一下 make smdk2410_defconfig,然后执行 make menuconfig 查看是否可以找到板子,并修改相关配置:
暂时先配置这些,当前的问题是找不到板子,继续修改 arch/arm/Kconfig,在目标集合中添加配置:
在执行 make menuconfig:
修改根目录下的 Makefile,添加交叉编译工具链:
./include/configs/smdk2410.h 修改,这是特定板载配置文件,非 make menuconfig 中的通用配置
mv smdk2410.h jz2440.h
修改 jz2440.h 文件,将带有 2410 字样的修改为 2440.
./arch/arm/cpu/arm920t/Makefile
当前编译肯定有不少错误,所以先在 menuconfig 中做下裁剪,删除掉不需要的内容:
USB 的先注释掉
RTC 关掉:
命令行配置先关闭:
压缩方式:
文件系统:
SYS_TEXT_BASE(链接基地址)没有配置。既然存在于 .config 中,那么就可以通过 make menuconfig 进行配置。
Boot images-->Text Base:设置为 0x00000000
同时注释掉 include/configs/jz2440.h 中的 CONFIG_SYS_TEXT_BASE
这三个函数被定义在 arch/arm/cpu/arm920t/s3c24x0/speed.c 中,但是当前工程版本中未包含这几个函数,而且搜索发现这几个函数在很多地方都有用,我们将这几个函数定义在 include/common.h 中,以前的版本也是在这里定义的。
多是一些配置宏重复定义,主要是 include/configs/jz2440.h 与 .config 中的定义有重复,注释掉 jz2440.h 中的重复定义,保留 .config 中的定义。同时 .config 中是否开启配置如下:
serial_s3c24x0.c 文件是移植进来的,还未做适配。
修改 drivers/serial/Makefile
修改 drivers/serial/Kconfig,文件的最后加上:
make menuconfig:
删除掉 jz2440.h 中串口的设置
编译后出问题:
查看代码后发现是 CONFIG_SERIAL1 没有了,代码依赖这个,而配置的 UART user for console 是 CONFIG_CONS_INDEX,所以要修改下 serial_s3c24x0.c 代码:
上面这个问题,其实都报的是一个问题,就是函数未申明,在 include/common.h 中申明此函数。
头文件未包含,包含一下 hang.h 即可。
在 jz2440.c 中,包含头文件 asm/mach-types.h
函数存在于 arch/arm/lib/cache-cp15.c 中,很显然是定义了但是未申明,这个文件同样包含 include/common.h 文件,可以将申明放在这里。
修改 include/common.h 文件:
其他相似的 cache 错误如下:
链接出错,可能是没有编译文件:如下
CONFIG_SYS_ARM_CACHE_CP15 没有配置,.config 中如下:
ARM architecture-->CP15 based cache enabling support 打开。
需要包含头文件 flash.h。
这个问题是因为我们开了宏 CONFIG_CMD_REGINFO 而出来的,关掉这个配置即可。
.config 中无此配置宏,这个宏在 jz2440.h 中配置,注释掉。
当前不打算开启 ubi,所以需要关掉相关配置宏。
CONFIG_CMD_UBI 和 CONFIG_CMD_UBIFS 在 jz2440.c 中被配置,注释掉。
cfi 不知道是否支持,先在 jz2440.h 屏蔽掉此项编译 CONFIG_FLASH_CFI_DRIVER
在jz2440.h 中屏蔽掉 CONFIG_ENV_IS_IN_FLASH
板子的路径错误了。搜索可以知道对应的是 CONFIG_BOARDDIR 这个配置宏,在看看 BOARDDIR 是如何取的:
对应 VENDOR 和 BOARD 这两个参数,上面添加 3.3.2 中对 board/samsung 下的 Kconfig 要修改,因为板子放在 samsung 目录下。
标签:行操作 ext size lan model tom roo shu dhcp
原文地址:https://www.cnblogs.com/kele-dad/p/13220557.html