历史上的今天
今天是:2025年11月18日(星期二)
2022年11月18日 | U-Boot-1.1.6移植到MINI2440开发板(2) —— S3C2440相关修改
2022-11-18 来源:zhihu
前面已经大致了解了U-Boot的编译流程,下面开始移植。
(没有找到知乎的代码高亮功能。。。)
开始移植:
首先修改顶层Makefile:
添加u-boot.dis的支持,有助于后续的分析(添加$(obj)u-boot.dis):
------- Makefile-------
239 ALL = $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(obj)u-boot.dis $(U_BOOT_NAND)
添加mini2440_config:
------- Makefile-------
1882 mini2440_config : unconfig
1883 @$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s3c24x0
复制头文件:
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6$ cd include/configs/
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6/include/configs$ cp smdk2410.h mini2440.h
复制开发板相关文件:
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6$ cd board/
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6/board$ mkdir mini2440
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6/board$ cp smdk2410/* mini2440/
然后执行命令,正常情况下将编译通过,否则需要核对是否有步骤未完成:
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6$ make mini2440_config
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6$ make
进一步修改:
将/board/mini2440目录下的smdk2410.c文件重命名:
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6$ cd board/mini2440/
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6/board/mini2440$ mv smdk2410.c mini2440.c
查找并修改:
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6$ grep -nwr "smdk2410"
MAKEALL:196: scb9328 smdk2400 smdk2410 trab
Makefile:1880: @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
board/mini2440/Makefile:28:COBJS := smdk2410.o flash.o
board/smdk2410/Makefile:28:COBJS := smdk2410.o flash.o
MAINTAINERS:435: smdk2410 ARM920T
可以看到/board/mini2440文件夹下的Makefile中包含smdk2410,因此对其进行修改:
------- /board/mini2440/Makefile -------
28 COBJS := mini2440.o flash.o
再次查找:
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6$ grep -nr "SMDK2410"
根据结果进行修改:
include/configs/mini2440.h:
------- include/configs/mini2440.h -------
38 #define CONFIG_MINI2440 1 /* on a MINI2440 Board */
...
111 #define CFG_PROMPT "MINI2440 # " /* Monitor Command Prompt */
board/mini2440/mini2440.c:
------- board/mini2440/mini2440.c -------
105 /* arch number of MINI2440-Board */
106 gd->bd->bi_arch_number = MACH_TYPE_MINI2440;
include/asm-arm/mach-types.h:
------- include/asm-arm/mach-types.h -------
209 #define MACH_TYPE_MINI2440 199
...
215 //#define MACH_TYPE_PXA_MERCURY 199
...
3046 #ifdef CONFIG_ARCH_MINI2440
3047 # ifdef machine_arch_type
3048 # undef machine_arch_type
3049 # define machine_arch_type __machine_arch_type
3050 # else
3051 # define machine_arch_type MACH_TYPE_MINI2440
3052 # endif
3053 # define machine_is_mini2440() (machine_arch_type == MACH_TYPE_MINI2440)
3054 #else
3055 # define machine_is_mini2440() (0)
3056 #endif
在以后版本的U-Boot(如u-boot-2016.01)中,定义了MACH_TYPE_MINI2440的值为199,因此这里借用,同时注释215行的定义。
/cpu/arm920t/s3c24x0/interrupts.c:
------- /cpu/arm920t/s3c24x0/interrupts.c -------
181 defined(CONFIG_MINI2440) ||
再查找并修改:
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6$ grep -nr "s3c2410"
tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6$ grep -nr "S3C2410"
根据结果进行修改:
cpu/arm920t/s3c24x0/speed.c:
------- cpu/arm920t/s3c24x0/speed.c -------
33 #if defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) || defined(CONFIG_S3C2440) || defined (CONFIG_TRAB)
...
39 #elif defined(CONFIG_S3C2440)
40 #include cpu/arm920t/s3c24x0/interrupts.c: 33 #if defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) || defined(CONFIG_S3C2440) || defined (CONFIG_TRAB) ... 40 #elif defined(CONFIG_S3C2440) 41 #include cpu/arm920t/s3c24x0/usb_ohci.c: ------- cpu/arm920t/s3c24x0/interrupts.c ------- 47 #elif defined(CONFIG_S3C2440) 48 #include cpu/arm920t/s3c24x0/serial.c: ------- cpu/arm920t/s3c24x0/serial.c ------- 22 #if defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) || defined(CONFIG_S3C2440) || defined (CONFIG_TRAB) ... 28 #elif defined(CONFIG_S3C2440) 29 #include cpu/arm920t/s3c24x0/i2c.c: ------- cpu/arm920t/s3c24x0/i2c.c ------- 37 #elif defined(CONFIG_S3C2440) 38 #include rtc/s3c24x0_rtc.c: ------- rtc/s3c24x0_rtc.c ------- 37 #elif defined(CONFIG_S3C2440) 38 #include /include/common.h: ------- /include/common.h ------- 449 #if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || defined(CONFIG_LH7A40X) /include/configs/mini2440.h: ------- /include/configs/mini2440.h ------- 37 #define CONFIG_S3C2440 1 /* in a SAMSUNG S3C2440 SoC */ /board/mini2440/mini2440.c: 29 #include 然后复制一份s3c2410.h头文件,并命名为s3c2440.h: tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6$ cd include/ tzw@tzw-pc:~/arm/u-boot/u-boot-mini2440-1.1.6/include$ cp s3c2410.h s3c2440.h 并对其内容进行修改: ------- /include/s3c2440.h ------- 31 #ifndef __S3C2440_H__ 32 #define __S3C2440_H__ ... 38 #define S3C2440_ECCSIZE 512 39 #define S3C2440_ECCBYTES 3 ... 54 #define S3C2440_NAND_BASE 0x4E000000 ... 63 #define S3C2440_ADC_BASE 0x58000000 ... 65 #define S3C2440_SDI_BASE 0x5A000000 ... 96 static inline S3C2440_NAND * const S3C2440_GetBase_NAND(void) 97 { 98 return (S3C2440_NAND * const)S3C2440_NAND_BASE; 99 } ... 132 static inline S3C2440_ADC * const S3C2440_GetBase_ADC(void) 133 { 134 return (S3C2440_ADC * const)S3C2440_ADC_BASE; 135 } ... 140 static inline S3C2440_SDI * const S3C2440_GetBase_SDI(void) 141 { 142 return (S3C2440_SDI * const)S3C2440_SDI_BASE; 143 } 并在/include/s3c24x0.h中添加S3C2440的相关寄存器: ------- /include/s3c24x0.h ------- 167 /* NAND FLASH (see S3C2440 manual chapter 6) */ 168 typedef struct { 169 S3C24X0_REG32 NFCONF; 170 S3C24X0_REG32 NFCONT; 171 S3C24X0_REG32 NFCMD; 172 S3C24X0_REG32 NFADDR; 173 S3C24X0_REG32 NFDATA; 174 S3C24X0_REG32 NFMECC0; 175 S3C24X0_REG32 NFMECC1; 176 S3C24X0_REG32 NFSECC; 177 S3C24X0_REG32 NFSTAT; 178 S3C24X0_REG32 NFECC; 179 } /*__attribute__((__packed__))*/ S3C2440_NAND; ... 467 #ifdef CONFIG_S3C2440 468 S3C24X0_REG32 GPACON; 469 S3C24X0_REG32 GPADAT; 470 S3C24X0_REG32 res1[2]; 471 S3C24X0_REG32 GPBCON; 472 S3C24X0_REG32 GPBDAT; 473 S3C24X0_REG32 GPBUP; 474 S3C24X0_REG32 res2; 475 S3C24X0_REG32 GPCCON; 476 S3C24X0_REG32 GPCDAT; 477 S3C24X0_REG32 GPCUP; 478 S3C24X0_REG32 res3; 479 S3C24X0_REG32 GPDCON; 480 S3C24X0_REG32 GPDDAT; 481 S3C24X0_REG32 GPDUP; 482 S3C24X0_REG32 res4; 483 S3C24X0_REG32 GPECON; 484 S3C24X0_REG32 GPEDAT; 485 S3C24X0_REG32 GPEUP; 486 S3C24X0_REG32 res5; 487 S3C24X0_REG32 GPFCON; 488 S3C24X0_REG32 GPFDAT; 489 S3C24X0_REG32 GPFUP; 490 S3C24X0_REG32 res6; 491 S3C24X0_REG32 GPGCON; 492 S3C24X0_REG32 GPGDAT; 493 S3C24X0_REG32 GPGUP; 494 S3C24X0_REG32 res7; 495 S3C24X0_REG32 GPHCON; 496 S3C24X0_REG32 GPHDAT; 497 S3C24X0_REG32 GPHUP; 498 S3C24X0_REG32 res8; 499 500 S3C24X0_REG32 MISCCR; 501 S3C24X0_REG32 DCLKCON; 502 S3C24X0_REG32 EXTINT0; 503 S3C24X0_REG32 EXTINT1; 504 S3C24X0_REG32 EXTINT2; 505 S3C24X0_REG32 EINTFLT0; 506 S3C24X0_REG32 EINTFLT1; 507 S3C24X0_REG32 EINTFLT2; 508 S3C24X0_REG32 EINTFLT3; 509 S3C24X0_REG32 EINTMASK; 510 S3C24X0_REG32 EINTPEND; 511 S3C24X0_REG32 GSTATUS0; 512 S3C24X0_REG32 GSTATUS1; 513 S3C24X0_REG32 GSTATUS2; 514 S3C24X0_REG32 GSTATUS3; 515 S3C24X0_REG32 GSTATUS4; 516 #endif ... 613 /* ADC (see manual chapter 16) */ 614 typedef struct { 615 S3C24X0_REG32 ADCCON; 616 S3C24X0_REG32 ADCTSC; 617 S3C24X0_REG32 ADCDLY; 618 S3C24X0_REG32 ADCDAT0; 619 S3C24X0_REG32 ADCDAT1; 620 S3C24X0_REG32 ADCUPDN; 621 } /*__attribute__((__packed__))*/ S3C2440_ADC; ... 722 /* SD INTERFACE (see S3C2440 manual chapter 19) */ 723 typedef struct { 724 S3C24X0_REG32 SDICON;
史海拾趣
|
这款LED发光T恤可以随意设置自己当前的心情状态,开心,兴奋,或者是伤心,把自己的心情show给别人,该避开你或者该邀请你一起happy,让身边的朋友心里有数。… 查看全部问答> |
|
OS:WINCE 6.0 HW:PXA310 问题描述: COM1:用作调试信息输出口 COM2:用作蓝牙通信口 串口程序:PUBLIC\\COMMON\\OAK\\DRIVERS\\SERIAL\\COM_MDD2 通过打印信息如下: +COM_Init... +COM_Open handle 0xD28173C0, access 0x0, share 0x3 ...… 查看全部问答> |
|
在PlatformBulding 中 如何使用远程工具跟踪 Windows CE 应用程序中的内存泄漏编译中出错 在PlatformBulding 中 如何使用远程工具跟踪 Windows CE 应用程序中的内存泄漏 出现这样的问题 . (要使用 Remote Performance Monitor 工具来监视当前内存负载 在 Platform Builder 中,选择 Tools | ...… 查看全部问答> |
|
最近eeworld在使用用LM3S811来DIY一些东西,本人曾经做过一些步进电机方面的控制,但都是使用一些公司的成品驱动器和控制板卡来做,对于最底层的步进电机的驱动却没有实际做过,既然论坛给了这个机会,也想抓住这个机会,和论坛的朋友一起完成这个D ...… 查看全部问答> |
|
C51有关定时器的程序中一些地方实在看不明白,请大家帮忙看看,下面的程序是一部分,问题都标注出来了。谢谢! #include #include #define uint unsigned int #define uchar unsigned char ...… 查看全部问答> |
|
小弟菜鸟一枚,刚接触DSP不久,师兄留给我一个问题:用S320DM643开发板实现远程视频监控功能,通过摄像头采集图像至dsp,采用自带的网络开发套件实现视频图像网络传输,远程端通过浏览器输入ip地址访问dsp端建立的http服务器即能看到摄像头采集到的 ...… 查看全部问答> |




