AT91SAM9261EK 开发环境的搭建--uboot

    科技2024-01-26  93

            开始基于at91sam9261ek 的uboot的编译与运行。atmel 提供了移植好的uboot供参考,这样,简单的修改,就可以让uboot跑起来。

           开发环境,VMware虚拟机+WIN10 64位。虚拟机安装ubuntu 18.04,开启samba共享。

     

    一、代码下载与编译

    1、git clone代码,并切换到最新的分支

     

    git clone git://github.com/linux4sam/u-boot-at91.git (如果太慢,可以使用gitee的同步地址)

    git clone https://gitee.com/fsmd/u-boot-at91.git

     

    可以切换到最新的分支:

    git branch -r

    git checkout origin/u-boot-2020.01-at91 -b u-boot-2020.01-at91

     

    2、make config

    make mrproper

    make at91sam9261ek_nandflash_defconfig make

     

    如果有错误提示,安装ubuntu 的组件包

    /bin/sh: bison: command not found

    ubuntu安装 bison

    sudo apt-get install bison

     

    /bin/sh: flex: command not found

    ubuntu 安装 flex

    sudo apt-get install flex

     

    提示以下,说明可以配置了

    LEX scripts/kconfig/zconf.lex.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf # # configuration written to .config #

     

     

    make menuconfig

    这里可以使用默认的配置即可,后面,发现问题,再修改优化。

     

    3、make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

    编译后,会生成u-boot.bin文件,可以用于uboot烧写

     

    二、烧写与运行

     

    这里使用J-Link烧写,当然,也可以用USB烧写。

     

    1、打开SAM-BA v2.18,连接上开发板。

     

     

     

     

    2、使能NandFlash,这里采用nandflash启动的方式

     

     

    3、设置uboot的烧写地址,这个地址,来自bootstrap的配置。

     

     

    4、烧写完后,可以重新上电运行,看下打印信息。

     

    RomBOOT AT91Bootstrap 3.10.0 (2020-10-05 10:49:00) NAND: ONFI not supported NAND: Manufacturer ID: 0xec Chip ID: 0xf1 NAND: Disable On-Die ECC NAND: Press the recovery button (BP4) to recovery NAND: Using Software ECC NAND: Image: Copy 0xa0000 bytes from 0x40000 to 0x21f00000 NAND: Done to load image <debug_uart> U-Boot 2020.01-linux4sam-2020.04-rc2-00001-gf33fcc447c-dirty (Oct 06 2020 - 20:43:30 +0800) CPU: AT91SAM9261 Crystal frequency: 18.432 MHz CPU clock : 198.656 MHz Master clock : 99.328 MHz DRAM: 64 MiB NAND: 128 MiB Loading Environment from NAND... *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Net: dm9000 Error: dm9000 address not set. dm9000 i/o: 0x30000000, id: 0x90000a46 DM9000: running in 16 bit mode MAC: 00:00:00:00:00:00 WARNING: Bad MAC address (uninitialized EEPROM?) could not establish link Hit any key to stop autoboot: 0 U-Boot> U-Boot>

     

    5、uboot是初步工作了,但它的目的是bootloader,也就是引导Linux内核的启动,或是烧写用。所以,后面根据内核配置的文件系统,需要进一步的修改,才能更好的使用。传递启动参数给内核。

     

    三、总结:

    这里NandFlash大小正确的识别了,就不用再配置NandFlash型号了。接下来需要把Linux内核编译后烧写进去,从而一步步进展。

     

    Processed: 0.014, SQL: 10