kipway@outlook.com
2017.2.25
树莓派(raspberry PI,目前最新的PI 3B)35美元的价格,配以成熟的基于完全开源debian的raspbian系统,目前很火爆。2017 年 1 月 23 日,树莓派(Raspberry Pi)在博客上发出了一则公告,表示 Google 在 2017 年将“非常有范儿地来到”树莓派社区,为“创造者(Maker)”们带来一系列智能工具,其中将包含人工智能(AI)和机器学习相关技术。
基于ARM的嵌入式系统已经非常成熟,国内也有很多做ARM软硬件平台定制的公司和团队。现在要做一个嵌入式软硬件结合的产品已经很容易了。
虽说是嵌入软件开发,和以前单片机的开发模式完全不一样了,不需要仿真器,直接在开发板平台上接键盘鼠标和显示器工作。开发语言使用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;
}
看上面小程序的输出结果,和在X86上32位Linux系统输出的完全一致(包括CPU的大小头模式都一样),你完全可以在PC机上编码和调试,最后才到ARM开发平台编译和测试。
软件移植,从Linux的X86平台移植过来几乎不用修改任何一行代码,重新编译即可。
如果你的代码本来就是windows/Linux通用的,你甚至可以在VS2015下编码和调试,这时就看出跨平台C/C++代码的优越性了,kipway就有一套自己的跨平台C/C++基础代码库,windows/Linux_x86/64和Linux_armhf下不用修改任何一行代码,重新编译即可。
TOM实时数据库就是跨平台的代码开发而成,可以点击这里去下载,也支持ARM平台嵌入版。
ARM产品级系统本着CPU和内存够用的原则(树莓派3的CPU和内存就行了),其他接口有些开发板上是没有的,需要产品化时配置。
结合以上工业应用特点,其实可以出一个通用的工业ARM嵌入式系统,目前研华研祥的嵌入式产品大部分还是基于intel低功耗的CPU方案的,价格比较贵。如果改为ARM方案,CPU国产几美元一片,整个系统符合上面4条的硬件平台不会超过人民币300元(甚至更低,世面上的安卓电视盒子也只买200多元)。
应该很多,凡是以前用PC实现的都可以用ARM平台替换。
ARM平台在工业上应用还很多。
注: 本文开发方法仅适合大内存通用系统ARM平台的开发,那些小内存使用busybox的ARM平台还是要使用交叉编译环境开发。