嵌入式ARM平台软件开发、移植、以及在工控上的应用杂谈

kipway@outlook.com

2017.2.25

树莓派(raspberry PI,目前最新的PI 3B)35美元的价格,配以成熟的基于完全开源debian的raspbian系统,目前很火爆。2017 年 1 月 23 日,树莓派(Raspberry Pi)在博客上发出了一则公告,表示 Google 在 2017 年将“非常有范儿地来到”树莓派社区,为“创造者(Maker)”们带来一系列智能工具,其中将包含人工智能(AI)和机器学习相关技术。

基于ARM的嵌入式系统已经非常成熟,国内也有很多做ARM软硬件平台定制的公司和团队。现在要做一个嵌入式软硬件结合的产品已经很容易了。

1.开发平台的搭建

虽说是嵌入软件开发,和以前单片机的开发模式完全不一样了,不需要仿真器,直接在开发板平台上接键盘鼠标和显示器工作。开发语言使用C/C++,可以在上面安装GCC/G++,调试工具GDB甚至集成开发环境比如codeblocks,因此开发板配置比目标板稍微高一些,以便提高工作效率。

安装开发工具,下面3行分别安装编译环境,调试器,和codeblocks集成开发环境


sudo apt-get install build-essential
sudo apt-get install gdb
sudo apt-get install codeblocks
                

开发工具安装GCC/G++,GDB,VIM,codeblocks,结果和在桌面PC机上开发完全一样。搭建好后,写一个小程序测试一下环境。


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/sysinfo.h>
bool IsLe()
{
    union {
        unsigned int un;
        unsigned char uc;
    }a;
    a.un = 1;
    return a.uc == 1;
}
int main()
{
    printf("sizeof(char)=%d\n", (int)sizeof(char));
    printf("sizeof(short)=%d\n", (int)sizeof(short));
    printf("sizeof(int)=%d\n", (int)sizeof(int));
    printf("sizeof(long)=%d\n", (int)sizeof(long));
    printf("sizeof(long long)=%d\n", (int)sizeof(long long));
    printf("sizeof(void*)=%d\n", (int)sizeof(void*));
    printf("sizeof(size_t)=%d\n", (int)sizeof(size_t));
    printf("sizeof(time_t)=%d\n", (int)sizeof(time_t));
    if (IsLe())
        printf("CPU WORD: Little Endian\n");
    else
        printf("CPU WORD: Big Endian\n");
    printf("CPU cores = %d\n", get_nprocs()); 
    return 0;
}
             

2.嵌入式软件开发模式

看上面小程序的输出结果,和在X86上32位Linux系统输出的完全一致(包括CPU的大小头模式都一样),你完全可以在PC机上编码和调试,最后才到ARM开发平台编译和测试。

软件移植,从Linux的X86平台移植过来几乎不用修改任何一行代码,重新编译即可。

如果你的代码本来就是windows/Linux通用的,你甚至可以在VS2015下编码和调试,这时就看出跨平台C/C++代码的优越性了,kipway就有一套自己的跨平台C/C++基础代码库,windows/Linux_x86/64和Linux_armhf下不用修改任何一行代码,重新编译即可。

TOM实时数据库就是跨平台的代码开发而成,可以点击这里去下载,也支持ARM平台嵌入版。

3.ARM开发板和ARM嵌入式产品的差异

ARM产品级系统本着CPU和内存够用的原则(树莓派3的CPU和内存就行了),其他接口有些开发板上是没有的,需要产品化时配置。

结合以上工业应用特点,其实可以出一个通用的工业ARM嵌入式系统,目前研华研祥的嵌入式产品大部分还是基于intel低功耗的CPU方案的,价格比较贵。如果改为ARM方案,CPU国产几美元一片,整个系统符合上面4条的硬件平台不会超过人民币300元(甚至更低,世面上的安卓电视盒子也只买200多元)。

4.嵌入式ARM平台在工控上可以做那些产品

应该很多,凡是以前用PC实现的都可以用ARM平台替换。

ARM平台在工业上应用还很多。

注: 本文开发方法仅适合大内存通用系统ARM平台的开发,那些小内存使用busybox的ARM平台还是要使用交叉编译环境开发。