原创

烧写u-boot、kernel、fs到开发板

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/WiHoog/article/details/102567025

一、前期准备配置

DNW配置:

设置波特率(115200)和端口号
设置设置USB下载地址(0xd0020010、0x23e00000)

安装USB驱动:

1)首先将J2开关拨至SD-BOOT处,打开串口工具,设置好参数,然后开发板上电,提示安装USB下载驱动,这里注意不要选择自动安装软件,而是要选择选择从列表或指定位置安装,然后点击下一步;

2)选择搜索位置包括这个位置,然后点击浏览;

3)找到光盘里工具软件文件夹的“USB driver”,然后点击确定,然后下一步;直至USB驱动安装完成。

交叉编译工具的安装:很简单,先解压后添加到PATH

NFS和TFTP服务器的安装和配置:http://www.cnblogs.com/klcf0220/articles/3099040.html

然后启动TFTP、NFS

注意: ubuntu 的 network manager, 如果开发板和开发环境的PC直连的话, 每次开发板哪掉电,开发环境PC会检测为网络未链接,nm 就会将已经设置好的网卡 down 掉。这在开发板reset的时候特别讨厌,你得每次都重新去设置PC的IP地址。因此我将桌面右上角的network manager的 Enable Networking 设置为 不选中,禁止 network manager 去管理网络。然后在终端里通过下面的命令,将网卡设置为 192.168.0.22(当然要跟你开发板的ip地址在同一个网段),输入命令:ifconfig eth0 192.168.0.22 ,这样每次开发板reset就不用再设置开发环境PC的IP了(此方法我试了不行,不过可以试试)。当然,如果你的开发板和开发环境PC都是链接到路由器或者HUB,就没有这个烦恼。

二、用TFTP网络

1、通过setenv 命令设置相关参数
# setenv baudrate 115200
# setenv bootdelay 3
# setenv ethact dm9000
# setenv ipaddr 192.168.1.11
# setenv serverip 192.168.1.22
# setenv gatewayip 192.168.1.1
# saveenv

2、 烧写u-boot
# tftp 0x40000000 u-boot-7-ok.bin
# nand erase 0x0 0x600000
# nand write 0x40000000 0x0 0x600000
nand boot启动方式启动,重启开发板;

3、烧写kernel
# tftp 0x40000000 uImage-7-ok
# nand erase 0x600000 0x500000
# nand write 0x40000000 0x600000 0x500000
# setenv bootcmd nand read 0x30008000 0x600000 0x500000 \;bootm 0x30008000
# saveenv
重新启动开发板。

4、 烧写fs
# tftp 0x40000000 gec-qt4-rootfs-7.img
# nand erase 0xe00000 0xf200000 //擦除可以擦大点
# nand write.yaffs 0x40000000 0xe00000 0xxxxx(根据下载大小确定)

重新启动开发板即可。

三、用超级终端

loadb 0x4000000
然后发送文件
nand erase ... ...
nand write ... ... ...
步骤跟TFTP下载相同。

四、用Fastboot (推荐)

    1. 前期准备先完成,即先安装好USB驱动,这里选择从列表或指定位置安装,浏览选择到gec_android_driver文件夹,点击确定。“USB:OK”,表示驱动OK,USB线已经正常跟板子连接。然后打开DNW,设置好相关参数,download adress设置为:0xd0020010,选择“connect”;
    2. 选择Transmit”,先下载gec210_usb.bin,文件下载后,DNW标题栏的USB状态会有“USB:0K”变为“USB:X”,然后再迅速变回“USB:OK”,即表示gec210_usb.bin下载成功,这时210的相关寄存器初始化完毕。然后设置DNW参数,Download adress修改为0x23e00000。
    3. 接下来我们就可以下载u-boot文件,点击USB Port > Transmit;选择images中Linux_image文件下的u-boot-7-ok.bin文件,此时只是下载到内存中,接下来就用fastboot固化;
    4. 格式化nand flash,输入nand scrub ,输入y,然后Enter。NADN FLASH格式化完毕。

说明:在固化程序到flash之前,我们需要先将flash格式化,否则在进入文件系统的时候会进行ECC校验,等待时间较长。

  • 在串口终端输入“fastboot”,然后按下回车键“Enter”;
  • 在windows点击开始,选择“运行”,然后输入“cmd”,按回车;
  • 进入到fastboot文件夹,然后输入“fastboot devices”,查询当前设备;然后输入下列执行如下烧写指令,烧写系统的uboot和内核及文件系统;

 

fastboot flash uboot f:\GEC_IOT_SYS\linux_image\u-boot-7-ok.bin
fastboot flash kernel f:\GEC_IOT_SYS\linux_image\uImage-7-ok
fastboot flash root f:\GEC_IOT_SYS\linux_image\gec-qt4-rootfs.img

系统更新之后,关掉电源,将启动方式选择为nand(S4),重新上电开发板,设置系统启动的参数:

  • 串口终端输入:# setenv bootcmd nand read 0x30008000 0x600000 0x500000 \;bootm 0x30008000
  • 串口终端输入:#setenv bootargs root=/dev/mtdblock4 init=/linuxrc console=ttySAC0,115200 rootfstype=yaffs rw
  • 串口终端输入saveenv ,保存环境变量。至此,Linux系统镜像固化或者更新完毕。
  • 重启开发板,进入Linux系统。

 


五、搭建交叉编译开发平台

PC端:
vim hello.c

void (*printf)(char *,...)=0xc3e1520c;
int main()
{
        printf("############## gec210!###############\n");
        return 0;
}

vim Makefile

复制代码

all:hello.bin clean
hello.bin:hello.o
        arm-linux-ld -Ttext=0x40000000 hello.o -o hello.elf
        arm-linux-objcopy -O binary -S hello.elf hello.bin
hello.o:hello.c
        arm-linux-gcc -c -nostdlib hello.c -o hello.o
clean:
        cp ./*.bin /tftpboot
        rm -rf ./*.elf ./*.bin ./*.o

复制代码

vim start.S

复制代码

.text
.global _start
_start:
    b ResetHandler
ResetHandler:
    ldr r0,=fmt
    mov lr,pc
    ldr pc,printf
printf:
    .word 0xc3e1520c
fmt:
    .asciz "############ welcome to gec210 ############\n"
.end

复制代码

开发板端:
1、烧写新的u-boot.bin
2、重启开发板后,执行如下配置
# setenv bootcmd tftp 40000000 xx.bin \;go 40000000
# saveenv
3、重启开发板,可以看到实验结果。

文章最后发布于: 2019-10-15 15:00:09
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览