AT91SAM9261EK 开发环境的搭建--uboot

        开始基于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,连接上开发板。

 

AT91SAM9261EK 开发环境的搭建--uboot_第1张图片

 

 

 

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

 

AT91SAM9261EK 开发环境的搭建--uboot_第2张图片

 

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

AT91SAM9261EK 开发环境的搭建--uboot_第3张图片

 

AT91SAM9261EK 开发环境的搭建--uboot_第4张图片

 

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
 

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内核编译后烧写进去,从而一步步进展。

 

你可能感兴趣的:(嵌入式Linux,at91,uboot)