ARM学习笔记四

ARM学习笔记四


给开发板烧写u-boot并实现一个简单的程序

  • u-boot:是一种普遍用于嵌入式系统中的Bootloader,Bootloader是在操作系统运行之前执行的一小段程序,通过它,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的软硬件环境,为最终调用操作系统内核做好准备。Boot Loader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统。系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的Boot Loader程序。
    文件下载:http://pan.baidu.com/s/1geZ2yXl
  • 解压文件并编译
tar xvf bootloader.tar 
cd bootloader/u-boot/
make distclean 
make mini2440_config 
make
  • 编译完成后会生成u-boot.bin即为编译完成
  • 开始烧写u-boot:烧写的时候选择images后将第一个u-boot文件选为我们刚刚编译的u-boot.bin文件,开始烧写,烧写完成重启开发板(开关拨到NAND
  • 打开串口工具minicom
sudo minicom
  • 选择shell终端工具q
    这里写图片描述
  • 查看当前设备信息:
print

这里写图片描述
- 在开发板的终端上打印一个简单的hello world
- 查阅u-boot.map查找pintf的函数入口地址

sudo vim bootloader/u-boot/u-boot.map

这里写图片描述
代码如下:

  void (*myprint)(const char *fmt,...);
  int _start()
  {
      myprint=(void *)0x33f963a8;
      myprint("hello world");
      return 0;
  }
  • 编写一个简单的Makefile,交叉编译并将文件上传到文件服务器目录
  • 编译后会生成一个hello.bin文件
CC=arm-linux-
Target=hello

all:
    $(CC)gcc -c $(Target).c -o $(Target).o
    $(CC)ld -Ttext 0x30000000 $(Target).o -o $(Target)
    $(CC)objcopy -O binary $(Target) $(Target).bin
    cp $(Target).bin /tftpboot/
clean:
    rm *.o $(Target).bin $(Target)
    rm /tftpboot/$(Target).bin
  • 连接开发板并下载hello.bin文件
sudo minicom 
//进入shell
//测试网络
ping 192.168.0.1
//下载文件
tftp 0x30000000 hello.bin
//执行
go 0x30000000

这里写图片描述
到这里就大功告成了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ExtraMile

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值