我是先接触了linux,再学习编程语言。最后才嵌入式开发学习。基本上网络的教程资料都是keli这个IDE下进行开发的。由于我个人比较喜欢vim的编辑模式,在linux下用顺手了。于是就在网上找了一些教程如何在linux进行嵌入式开发,写了一点小笔记,分享给大家。希望能帮助到你。
在linux下的步骤和windows一样的,先编写c文件,然后编译,最后把hex文件烧录到单片机。
只是在windows下使用IDE直接就可以编写加编译,把两个步骤合成了一个。在linux则是分开的,使用任何你喜欢的编辑器编写c文件,然后使用sdcc编译成ihx文件,再使用packihx把ihx文件转换成hex文件,最后使用stcflash这个工具烧录到单片机就可以了。
sdcc stcflash 下载
下载sdcc,根据你的linux发行版的包管理工具下载sdcc,当然你也可以下载源码编译安装。
stcflash是一个基于python的小工具,所以你需要提前准备python环境。
stcflash download link github
sdcc编译
编写c文件
- #include<mcs51/8051.h> // 注意sdcc和keli的库文件地址不一样
- void Delay(unsigned int);
- void main(void){
- while(1){
- P2_0 = 0; // 注意sdcc的库文件位引脚定义和keli的区别 keli一个是^ sdcc是_
- Delay(1000);
- P2_0 = 1;
- Delay(1000);
- }
- }
- void Delay(unsigned int x){
- unsigned int a, b;
- for(a = x; a > 0; a--)
- for(b = 100; b > 0; b--);
- }
复制代码
在Keli下引用引脚定义是#include <reg51.h>,而sdcc则是#include <mcs51/8051.h>
详细头文件见末尾。
编译文件的命令不是gcc而是sdcc。
可以看到sdcc并没有生成hex文件,而是生成ihx文件。所以还需要使用`packihx`命令生成。
stcflash 烧录到单片机
stcflash需要serial模块支持,所以需要安装pyserial
直接运行程序可以检测单片机,注意需要root提权。
命令后接文件把文件烧录到单片机。
需要注意的地方
1. 引脚定义文件 `reg51.h` > `mcs51/8051.h`
2. 引脚位操作 `P1^0` > `P1_0`
3. sdcc默认生成的文件后缀不是`hex`而是`ihx`,需要使用`packihx`转换。
|