
jetbot uboot中运行程序
创建裸机程序
编写一个led.s
的程序
mov x3,#0x5A
mov x4,#0x55
loop:
b loop
创建一个Makefile
文件用于编译。
CROSS = aarch64-linux-gnu-
CC=$(CROSS)gcc
LD=$(CROSS)ld
OBJCOPY=$(CROSS)objcopy
all: led.s
$(CC) -g -c -o led.o led.s
$(LD) led.o -Ttext 0x80090000 -o led.elf
$(OBJCOPY) -O binary -S led.elf led.bin
$(CROSS)objdump -D led.elf > led.dis
clean:
rm -f *.o *.elf *.bin *.dis
# 设置交叉编译工具前缀为 aarch64-linux-gnu-
CROSS = aarch64-linux-gnu-
# 定义编译器为 aarch64-linux-gnu-gcc
CC=$(CROSS)gcc
# 定义链接器为 aarch64-linux-gnu-ld
LD=$(CROSS)ld
# 定义目标文件格式转换工具为 aarch64-linux-gnu-objcopy
OBJCOPY=$(CROSS)objcopy
# all 目标: 编译、链接、生成二进制文件和反汇编文件
all: led.s
# 使用 gcc 编译 led.s 汇编文件,生成 led.o 目标文件,启用调试信息
$(CC) -g -c -o led.o led.s
# 使用 ld 链接 led.o,指定起始地址 0x80090000,生成 led.elf 可执行文件
$(LD) led.o -Ttext 0x80090000 -o led.elf
# 使用 objcopy 将 led.elf 转换为 led.bin 二进制文件,并去除多余的符号信息
$(OBJCOPY) -O binary -S led.elf led.bin
# 使用 objdump 生成 led.elf 的反汇编文件并保存为 led.dis
$(CROSS)objdump -D led.elf > led.dis
# clean 目标: 删除生成的中间文件和输出文件
clean:
# 删除所有 .o、.elf、.bin 和 .dis 文件
rm -f *.o *.elf *.bin *.dis
编译我们的程序,并放到FTP目录下面。
make
cp led.bin /tftpboot/
jetbot板运行程序
执行sudo reboot
命令进行重启,然后快速按Enter
键进入u-boot模式。
然后启动我们的网卡,设置ftp服务器,然后下载我们的led.bin
文件。
pci enum;pci
setenv serverip 192.168.9.119
setenv ipaddr 192.168.9.9
saveenv
tftp led.bin
可以看到地址是0x84000000
。
执行如下命令:
go 0x84000000
如果我们不加后面的loop
死循环命令,它会直接执行0x84000000
后面的,一般都会重启。
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 :
好是好,这个对效率影响大不大哇,效率高不高
一个bug让程序员走上法庭 索赔金额达400亿日元
剑轩 : 有点可怕
ASP.NET Core 服务注册生命周期
剑轩 :
http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术