历史上的今天
返回首页

历史上的今天

今天是:2024年11月10日(星期日)

正在发生

2021年11月10日 | mini2440_uboot移植笔记

2021-11-10 来源:eefocus

一、准备阶段


   下载软件:u-boot   下载地址:ftp://ftp.denx.de/pub/u-boot/

   u-boot-2009.11.tar.bz2     为《friendlyARM》参考文档版本


   u-boot-2010.03.tar.bz2       为《申嵌-uboot移植》参考文档版本


  本次使用较新的uboot版本:u-boot-2010.03.tar.bz2

  tar xvjf /yang/uboot_tools/u-boot-2010.03.tar.bz2


二、建立开发板文件,测试编译环境(6.1)


1、修改顶层Makefile(6.1.1) (目的:定义交叉编译工具链和开发板配置选项)

    vim Makefile 


CROSS_COMPILE ?=arm-linux-    

    yang2440_config :       unconfig

             @$(MKCONFIG) $(@:_config=) arm arm920t yang2440  samsung s3c24x0


2、在/board 中建立yang2440 目录和文件(6.1.2)

  

      复制sbc2410x 的文件(config.mk  flash.c  lowlevel_init.S  Makefile  yang2440.c)到此,做适当修改   

      cd samsung/


       mkdir yang2440

      cd yang2440

      cp -arf /yang/uboot/u-boot-2010.03/board/sbc2410x/* ./

      mv sbc2410x.c yang2440.c


修改此目录下的:vim Makefile     

      COBJS := sbc2410x.o flash.o修改为:

      COBJS   := yang2440.o flash.o


3、在include/configs/中建立开发板配置文件(6.1.3) 

    cp include/configs/sbc2410x.h include/configs/yang2440.h


4、测试编译环境(6.1.4)  

    make yang2440_config

    make

  

  编译通过

  压缩:tar cjf u-boot-2010.03_000.tar.bz2 u-boot-2010.03


二、修正配置文件


  1、修改配置文件(6.5.2)   include/configs/yang2440.h

  

    vim include/configs/yang2440.h


    //#define CONFIG_S3C2410        1       /* specifically a SAMSUNG S3C2410 SoC   */

    //#define CONFIG_SBC2410X       1       /* on a friendly-arm SBC-2410X Board  */


/****************  add by yangchaofeng  ***********************************/

    #define CONFIG_S3C2440 1           /* in a SAMSUNG S3C2440 SoC */


#define CONFIG_YANG2440 1          /* on a YANG2440 Board */

    #define CONFIG_YANG2440_LED 1

    #define CONFIG_S3C2410_NAND_SKIP_BAD 1 /* input clock of PLL */   


/****************  add by yangchaofeng  ***********************************/

        

    修改vim include/asm/arch/s3c24x0_cpu.h 对S3C2440支持

    #ifdef CONFIG_S3C2400


 #include

    #elif defined CONFIG_S3C2440

            #include

    #else


2、添加CONFIG_S3C2440 定义,目的:对CONFIG_S3C2440的支持  (6.5.1)

  

    按照手册依次修改以下文件(6.5.1):

     ->common/serial.c                     

    cpu/arm920t/s3c24x0/interrupts.c


->cpu/arm920t/s3c24x0/timer.c

    ->include/serial.h

    ->cpu/arm920t/s3c24x0/speed.c

    include/asm-arm/arch-s3c24x0/s3c24x0.h(主要存放寄存器定义)


->s3c24x0_dma

        ->-->s3c24x0_clock_power

        ->s3c2410_nand

        ->-->s3c24x0_gpio  

  编译通过

  压缩:tar cjf u-boot-2010.03_001.tar.bz2 u-boot-2010.03 


三、探索启动代码(6.2)  (cpu/arm920t/start.S)

  

  1、修改CPU 频率初始化设置(6.2.2)


vim cpu/arm920t/start.S   

      加入:

      #define CLK_CTL_BASE    0x4C000000

      #define MDIV_405 0x7f << 12


#define PSDIV_405 0x21

    #define MDIV_200 0xa1 << 12

    #define PSDIV_200 0x31


#if defined(CONFIG_S3C2440)

          ldr r1, =0x7fff

          ldr r0, =INTSUBMSK

          str r1, [r0]

    #endif


#if defined(CONFIG_S3C2440)

    /* FCLK:HCLK:PCLK = 1:4:8 */

            ldr r0, =CLKDIVN

            mov r1, #5

            str r1, [r0]


 mrc p15, 0, r1, c1, c0, 0

            orr r1, r1, #0xc0000000

            mcr p15, 0, r1, c1, c0, 0

            mov r1, #CLK_CTL_BASE


  mov r2, #MDIV_405

            add r2, r2, #PSDIV_405

            str r2, [r1, #0x04]

    #else/* FCLK:HCLK:PCLK = 1:2:4 */


/* default FCLK is 120 MHz ! */

            ldr     r0, =CLKDIVN

            mov     r1, #3

            str     r1, [r0]


#endif  /* CONFIG_S3C24X0 */


 


2、修改lowlevel_init.S 文件(6.2.3)


    为了匹配mini2440 的存储器位宽、速度、刷新率(总线上连接的Nor Flash 和SDRAM),需要修改lowlevel_init.S文件。 


 vim  board/samsung/yang2440/lowlevel_init.S

       

    #if defined(CONFIG_S3C2440)


#define Trp 0x2 /* 4clk */

    #define REFCNT 1012

    #else

    #define Trp 0x0 /* 2clk */

    #define REFCNT 0x0459

    #endif


#define B4_BWSCON               (DW16 + WAIT + UBLB)

    #define B3_BWSCON               (DW16)


3、修改代码重定向部分  cpu/arm920t/start.S(6.2.4)

  

     按照手册,添加相关代码


cp /yang/uboot_tools/u-boot-2010.03/board/embedclub/smdk2440a/nand_read.c board/samsung/yang2440/

    

    vim board/samsung/yang2440/Makefile

    COBJS   := nand_read.o yang2440.o flash.o


m cpu/arm920t/u-boot.lds

   

    board/samsung/yang2440/lowlevel_init.o

      board/samsung/yang2440/nand_read.o


 再次编译、烧写。串口有数据输出。此时LED1、LED3长亮,蜂鸣器长响!

     

  4、关闭为AT9200 写的LED 跳转(6.2.1)


 /*   注释这两行

            bl      coloured_LED_init

            bl      red_LED_on

    */


vim board/samsung/yang2440/yang2440.c

    

    原因在此://蜂鸣器为pwm输出功能,LED1、LED2、LED3、LED4依次为:输出、输入、输出、输入

    gpio->GPBCON = 0x00044556;


gpio->GPBUP = 0x000007FF;

   

    加入:

    #ifdef CONFIG_YANG2440_LED

            bl LED_on

    #endif


 


编译通过

   压缩:tar cjf u-boot-2010.03_002.tar.bz2 u-boot-2010.03

   

   将u-boot下载测试,可以输出信息。ED1、LED2、LED3、LED4亮一下,蜂鸣器响一下


四、修改初始化代码(6.3)

 

  1、修改   board/samsung/yang2440/yang2440.c (6.3.2)


vim board/samsung/yang2440/yang2440.c

     ->FCLK_SPEED

     ->board_init   //将4个LED管脚和buzzer设为输出


vim include/asm-arm/mach-types.h       添加机器码

        #define MACH_TYPE_YANG2440             1900



   编译通过

   压缩:tar cjf u-boot-2010.03_003.tar.bz2 u-boot-2010.03


增加debug信息输出:vim include/common.h

   #define DEBUG  1


2、修改lib_arm/board.c 文件(6.3.1)

  

     不做修改!无意义!!!


4、继续完善:CONFIG_S3C2440 定义,目的:对CONFIG_S3C2440支持  (6.5.1)

     按照手册依次修改以下文件(6.5.1):

     drivers/i2c/s3c24x0_i2c.c


include/asm-arm/arch-s3c24x0/s3c24x0.h(主要存放寄存器定义)

        -> s3c24x0_interrupt

        ->usb_device

        ->sdi  (SD)


 编译通过

    压缩:tar cjf u-boot-2010.03_004.tar.bz2 u-boot-2010.03   

  

  除LCD及video外,其它相关配置均已修改完成!


5、继续修改配置文件(6.5.2)include/configs/yang2440.h  

  

    vim include/configs/yang2440.h    

        ->Hardware drivers (DM9000)


6、 修改网络相关代码  (6.4.4)

    drivers/net/dm9000x.c

         ->dm9000_init 


 修改完后,编译、烧写。ping 测试网卡可以正常工作!!!

   

    压缩:tar cjf u-boot-2010.03_005.tar.bz2 u-boot-2010.03 


7、修改网络相关代码  (6.4.4)

     net/nfs.c

        ->#define NFS_TIMEOUT (10*2000UL)   


 修改为:CONFIG_BOOTCOMMAND=u-boot启动时不进入命令行下的默认执行命令:

     #define CONFIG_BOOTCOMMAND    "nfs 30008000 192.168.0.250:/opt/zImage.img;bootm"


 nfs烧写下载成功,内核启动不成功!!!

   

    刚开始怀疑是不是因为nand的问题,后来想了想,改了回了自己写的机器码1900->1999


 vim include/asm-arm/mach-types.h       添加机器码

    编译,烧写,内核启动成功!!!

       

 #define CONFIG_SYS_PROMPT               "[u-boot@YANG2440]# "

    #define CONFIG_BOOTARGS         "console=ttySAC0 root=/dev/nfs "


 "nfsroot=192.168.0.250:/yang/filesystem/myfs_mini "

                "ip=192.168.0.230:192.168.0.250:192.168.0.1:255.255.255.0:debian:eth0:off"


利用自己编译的文件系统,通过nfs挂接设置并成功!!!

      

       压缩:tar cvjf u-boot-2010.03_006.tar.bz2 u-boot-2010.03


修改:#define CONFIG_SYS_LOAD_ADDR            0x30008000 

       #define CONFIG_BOOTCOMMAND    "nfs 192.168.0.250:/opt/zImage.img;bootm"  //取掉了30008000


常用:

    nfs启动:nfs 30008000 192.168.0.250:/opt/zImage.img

         nfs 192.168.0.250:/opt/uImage-shenqian

             bootm


 setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0

推荐阅读

史海拾趣

硕颉(BITEK)公司的发展小趣事

硕颉科技不断推出创新产品,主打系列包括逆变器、LED驱动器、线性稳压器、AC/DC驱动器、MOSFET、视频编码器和解码器以及图像处理器等。这些产品广泛应用于消费电子领域,满足了市场对高质量电子产品的需求。同时,公司积极拓展销售网络,以台湾、韩国、中国大陆和日本等地区为主,逐步向全球市场扩张。

欧密格光电(Amicc)公司的发展小趣事

硕颉科技股份有限公司成立于1999年11月,总部设在台北市。自成立以来,公司一直专注于积体电路的设计、研发与销售,致力于为客户提供高质量的电子产品解决方案。在创立初期,硕颉便以其创新的技术和严谨的研发态度,迅速在电子行业崭露头角。公司资本额为新台币三亿三仟万元,为公司的稳健发展提供了坚实的资金基础。

CEVA, Inc公司的发展小趣事

随着万物互联时代的到来,CEVA公司迎来了新的发展机遇。Wi-Fi 6、Wi-Fi 7、5G-Advanced和蜂窝式物联网等技术的快速发展,推动了客户对新建置芯片和解决方案的需求。CEVA凭借其在无线连接和智能传感技术领域的领先地位,能够为客户提供全面的解决方案,满足这些技术在多个终端市场带来的巨大商机。同时,CEVA也是唯一能够提供蓝牙加上Wi-Fi或UWB加上蓝牙等组合解决方案的授权许可商,这一优势使得CEVA在全球半导体产业中占据了重要地位。

以上是基于公开资料对CEVA, Inc.在电子行业中的几个重要发展节点的概述。这些故事展示了CEVA如何在技术创新、市场布局和应对挑战等方面取得了显著成就,为公司的持续发展奠定了坚实基础。然而,由于电子行业的快速发展和不断变化的市场环境,CEVA的未来仍充满挑战和机遇。

Dawn Electronics Inc公司的发展小趣事

随着业务的不断扩张,Dawn Electronics Inc公司意识到供应链管理的重要性。公司加强了与供应商的合作,建立了稳定的供应链体系,确保原材料的质量和供应的稳定性。同时,公司还优化了生产流程,提高了生产效率和产品质量。这些措施有效地降低了成本,提高了公司的竞争力。

Central Semiconductor公司的发展小趣事

随着全球电子市场的不断扩大和竞争的加剧,Central Semiconductor积极实施全球化战略,拓展国际市场。公司在全球范围内建立了完善的销售网络和供应链体系,以确保产品能够及时、准确地到达客户手中。

同时,Central还不断开拓新的业务领域,如汽车电子、工业控制、医疗电子等。通过不断的技术创新和市场拓展,Central逐渐在多个领域取得了显著的业绩和市场份额。

这五个故事分别从不同的角度展示了Central Semiconductor在电子行业中的发展历程和成就。无论是坚守与转型、创新开发、对停产产品的支持、裸片产品的开发还是全球化布局与业务拓展,Central都展现出了其敏锐的市场洞察力和强大的市场竞争力。这些故事不仅是对Central发展历史的回顾,也是对其未来发展的展望和期许。

Everspin Technologies公司的发展小趣事

Everspin一直致力于MRAM技术的创新和发展。其中,自旋转移力矩MRAM(STT-MRAM)是该公司的重要技术之一。Everspin在平面内和垂直磁隧道结(MTJ)STT-MRAM位单元的开发方面取得了显著成果,并积累了超过600项有效专利和应用的知识产权组合。这些技术的创新和专利的积累,使得Everspin在MRAM市场中保持了领先地位。

问答坊 | AI 解惑

PIC 8位单片机的分类和特点

PIC 8位单片机的分类和特点 …

查看全部问答>

大赛用芯片资料

本帖最后由 paulhyde 于 2014-9-15 09:02 编辑 芯片资料  …

查看全部问答>

2010年的汽车电子趋势预测

中国的汽车产业在今年很有可能触及或跨越年产销一千万辆这个门槛,事实上在实现这个目标以前,中国就已经成为仅次于美国的全球第二大汽车市场。在当前的汽车中,汽车电子系统所占的比重越来越大,很多特色化的功能都是依赖汽车电子技术来实现的,如 ...…

查看全部问答>

淘宝上的linux开发板能买不??

我是新手,以前都是跟着导师做单片机的。感觉单片机有点“不过瘾”的感觉,想往高深的学。想学linux下嵌入式编程,但是身边又没有的这方面的资源。于是想买一块开发板子。请问:淘宝上的那种便宜的开发板比如像2410、2440板子能买不?? 问题1:开 ...…

查看全部问答>

请问一般公司会招聘底层开发(驱动开发)的应届生吗

本人在校学生,最近做的项目都用到了一些驱动的开发,感觉底层这方面的编程比普通的软件开发难度大一点。如果是软件公司招聘的话,他们会招聘新手吗?个人感觉做这方面的真正开发,都是有多年经验的老手。…

查看全部问答>

ce下怎么获取ESN码还有怎么获取是手机的型号啊。。

ce下怎么获取ESN码还有怎么获取是手机的型号啊。。 …

查看全部问答>

伺服系统小结(连续上篇)

三、伺服系统调试   接通伺服驱动器的电源, 先进入测试调整模式,测试调整模式可以执行伺服驱动器的测试操作,报警复位和参数编辑等等.其数字操作器的按键说明如表1: 键 出现的情况 MOD 在不同模式 ...…

查看全部问答>

2812调试时关于看门狗的一些问题

2812调试时关于看门狗的一些问题 大家好, 我目前正在调试一块自己做的2812的板子,遇到关于看门狗的一些问题: 一点连续运行按钮程序就跳到3FFC00处(此处应该是复位向量),而点单步运行的时候程序可以走的.点连续运行的时候用示波器观察reset引脚,发 ...…

查看全部问答>

机械电能表到电子式电能表讲义

机械电能表到电子式电能表讲义,从事电能表行业可以看看哦! [ 本帖最后由 aishuang 于 2011-7-16 12:22 编辑 ]…

查看全部问答>

请大家看看我这个串口的程序哪里不对??很多乱码

单片机的接收端是连接的GPS信号, 发送端连接的是GPRS的接收。 单片机就是把收到的经纬度找出来传给GPRS,用UDP发送。 只要不连GPS, 发送的数据就完全正确。 连了GPS之后,数据就乱了,GPS是一直在发送,速度很快 #include #include #incl ...…

查看全部问答>