ubuntu下用C语言进行硬件编程过程

ubuntu下用C语言进行硬件编程过程

前言

在学习Linux开发板时,我们在Ubuntu或者CentoS时当中只能使用单纯汇编或者汇编+C语言的方式进行程序编写,今天我们就来看看利用汇编+C语言的方式进行程序编写。(这里我用的是VS code,其他的也差不多)

说明

我们大多数人都是从32单片机过来的,对于汇编的概念和使用可谓是知之甚少,起始在32或者51单片机中就一直伴随汇编程勋的编写,只不过我们大多数用户在使用时根本不需要关注汇编程序这种底层的东西。汇编编程一般用于最底层的驱动文件,像51和32的启动文件就全是通过汇编程序就行单片机的驱动。这都是ST公司在出厂之前就已经编程好,我们只需要拿着用就行,而Linux开发板是A系列的板子,对应的也就没有像ST系列的单片机那样拿着驱动文件就用,在Linux中需要我们自己编写。

编程过程

1、和纯汇编方式一样需要创建文件和工作区,在VS code中打开相应的文件,接着将其工作区另存在该文件目录下。在这里插入图片描述

2、上面提到了驱动需要我们自己编写,所以接下来是编写驱动程序,在工作区新建xxx.S的文件进行程序编写。
在这里插入图片描述

3、这里就是我们最熟悉的C文件,和2一样创建xxx.c和xxx.h文件,这里和32的用法一模一样,这里就不多讲了

4、最后一步就是程序写好之后的烧写,这里我们运用Makefile进行模块化的烧写,省去一些不必要的麻烦。新建一个Makefile文件,将烧写命令模块化编写之后就可以烧写完毕
在这里插入图片描述

在终端里面运行下面代码就可以正常烧写

make

最后下载到SD卡里面就完成了

./imxdownload xxx.bin /dev/sdx
/*这里的xxx.bin是上面make运行之后烧写完成之后的文件,/dev/sdx是SD卡所在的目录*/

总结

第4步的烧写过程使用Makefile的方式进行烧写是我们比较常用的一种方式,如果没用习惯,亦可以将其中的代码一段一段的进行运行,最后也能得到xxx.bin文件。

以下就是分段烧写文件的命令
1 、arm-linux-gnueabihf-gcc 编译文件
arm-linux-gnueabihf-gcc -g -c xxx.s -o xxx.o

2 、arm-linux-gnueabihf-ld 链接文件
arm-linux-gnueabihf-ld -Ttext 0X87800000(起始地址) xxx.o -o xxx.elf

3 、arm-linux-gnueabihf-objcopy 格式转换
arm-linux-gnueabihf-objcopy -O binary -S -g xxx.elf xxx.bin

4 、arm-linux-gnueabihf-objdump 反汇编
arm-linux-gnueabihf-objdump -D xxx.elf > xxx.dis

./imxdownload xxx.bin /dev/sdx(这里如果运行有问题就是imxdownload权限的问题,使用chmod 777 imxdownload的命令赋予其权限再运行)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

电子小白的每一天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值