交叉编译tslib1.4过程详述,配合QT4.5.3成功在Mini2440运行成功

发布者:innovator7最新更新时间:2024-06-20 来源: elecfans关键字:交叉编译  QT4  Mini2440 手机看文章 扫描二维码
随时随地手机看文章

移植tslib-1.4所遇到的问题分析与总结(elephant半原创:在移植过程中参考了一些网友的资料,现在结合我遇到的问题分析一下移植过程)

一:移植环境

1:主机环境:Ret Hat Enterprise 5

2: 交叉工具链:arm-linux-gcc-4.3.2

3: 开发平台:友善之臂mini2440+统宝3.5寸屏

4:所需的软件资源:

tslib-1.4.tar.gz  qt-x11-opensource-src-4.5.3.tar.gz   qt-embedded-opensource-src-4.5.3.tar.gz

(QT的移植是参考网上找到一篇较好的移植手册,但是此手册的作者不知道是无心之失还是咋的,给的资料有所保留。不过思路比较清晰以及解析的比较详细,还是非常值得参考的)

参照的文章链接地址为:http://www.linuxidc.com/Linux/2012-08/68412.htm

二:交叉编译tslib-1.4

为什么要移植tslib1.4呢?

在移植好触摸屏的驱动后(在移植内核的时候完成),一般都要移植一个tslib来配合,在用户层对触摸屏的数据进行滤波和矫正,同时也可以给应用程序一个统一的接口,很多GUI都支持tslib的接口。我移植到开发板的QT版本是QT4,所以用tslib-1.4进行触摸屏校正,因为QT4只是支持tslib-1.4(目前最新版),QT2支持的是tslib-1.3版本,所以在移植过程中先要看清楚自己移植的是什么版本。 

简单描述tslib校正触摸屏原理:

   Tslib是触摸屏驱动和应用层之间的适配层,它从触摸屏驱动处获得原始的设备坐标数据,通过一系列的去噪、去抖、坐标变换等操作,来去除噪声并将原始的设备坐标转换为相应的屏幕坐标。通过tslib/src/tslib.h文件可以看出,在tslib中为应用层提供了2个主要的接口ts_open(),ts_close();ts_read()和ts_read_raw(),其中ts_read()为正常情况下的接口,ts_read_raw()为校准情况下使用的接口。从tslib默认的ts.conf文件中可以看出包括如下基本插件:(强烈建议通读这个配置文件并理解这个文件所写的内容)

   pthres 为Tslib 提供的触摸屏灵敏度门槛插件;

   variance 为Tslib提供的触摸屏滤波算法插件;

   dejitter 为Tslib 提供的触摸屏去噪算法插件;

   linear为Tslib 提供的触摸屏坐标变换插件。 

tslib 从触摸屏驱动采样到的设备坐标进行处理再提供给应用端的过程大体如下:

   raw device --> variance --> dejitter --> linear --> application
    module         module       module      module

再来看看ts_calibrate主要做了哪些事情,校准情况下,tslib对驱动采样到的数据进行处理的一般过程如下:
   1。读取屏上5个点的坐标(Top Left,Top Right,Bottom Left,Bottom Right,Center),在进行一系列的变换,取样的5个点,实际上是包含3个不同的X值,3个不同的Y值。和scaling 值一共7个值,一起保存到/etc/pointercal中.(触摸屏校准文件)

   2.这个/etc/pointercal文件主要是供linear插件使用。而我们每次的触摸的操作都进行多次触摸坐标变换。

至此已经找到解决问题的大体的方法了。在校准触摸屏后只需及时的让linear插件再次读取新的/etc/pointeracal文件,这样新校准的坐标信息就及时的更新到上层应用。下面就要考虑具体实现的问题了。

1。从linear.c文件可以看出在该模块初始化时读取了/etc/pointercal文件。只要在linear_read()中读取新的/etc/pointercal文件即可。

2。校准后保存了一个新的pointercal文件,但ts_lib怎么知道当前的pointercal文件是应该读取的新文件。刚开始的时候我们在linear.c的linear_read()函数中采取计数轮询的方式查看/etc/poinercal文件的最后更新时间,如果当前的更新时间大于上次更新时间,就去读取下pointercal文件。我们暂且不说在一台刚下流水线的机器,它的rtc时间是不确定,再进行时间比较时会出现错误。另外始终的轮询的方式和ts_lib的采样间隔时间值很小。这样用户在进行触摸屏常按操作时,会非常明显的消耗系统资源。

3。此时想到的办法就是进程通信,ts_lib是个动态库运行于系统中,他存在系统中不是以进程方式,但可以采取折衷方法,将调用ts_lib的进程号(实际上就是X的进程号)保存到一个配置文件中。这样在使用ts_calibrate校准触摸屏后,利用信号的方式给ts_lib发送用户自定义信号,ts_lib的lineral.c中加一个简单的信号处理函数。在接受到信号后就去读取下新的pointercal文件。正常情况下不做任何的轮询和读取操作。

从上说的3个步骤中完全解决了校准后应用端触摸及时生效的问题。还有个次要问题就是如何锁屏?这需要从内核入手了,查看linux2.6内核/drivers/input/evdev.c从该驱动提供的ioctl中看到对基于evdev的输入设备都提供EVIOCGRAB实现。顾名思义,grab就是将当前的输入操作抓取到当前的操作中,让当前操作之外的所有应用端读不到触摸屏的触摸操作。由驱动源码就很容易知道该如何实现锁屏解锁操作了。源码如下:

truct tsdev *ts;
char *tsdevice = '/dev/input/event0';
ts = ts_open(tsdevice, 0);
int ts_tmpfd = ts_fd(ts);
if (ts_tmpfd== -1)
{
    perror('ts_open');
    exit(1);
}
unsigned long val =1;
int ioctl_ret=ioctl(ts_tmpfd,EVIOCGRAB,&val);
printf('now lock the ts ioctl ret is:%d/n',ioctl_ret);

if (ioctl_ret!=0)
{
    printf('Error: %s/n', strerror(errno));
    exit(1);
}
printf('lock the ts success /n');

现在开始交叉编译tslib,在开始编译前需要确定自己的开发环境是否安装了autoconf、automake和 libtool等软件包。之前我的虚拟机并不是完全安装,在编译过程中出现很多问题,在这里我建议大家虚拟机完全安装。不过如果确实不想重装系统的话,也可以手动安装,之前我自己就是手动安装的,虽然成功安装了tslib软件,但是在后续的QT移植过程中出现很多不可预知的错误,因此还是建议大家的虚拟机是完全安装的。可以利用命令查看自己虚拟机上的autoconf版本:autoconf –V

在开始编译tslib前还有一个问题需要特别注意:就是要确定在编译时所用的工具是交叉工具链而不是PC平台下的GCC工具,因为我要运行的平台是嵌入式ARM架构而不是PC的X86架构。关于这一点,在网上找到很多资料都没有说明,几经寻找之下,终于看到一篇文章对这一点作了说明。详细解析tslib-1.4交叉编译:http://www.linuxidc.com/Linux/2010-04/25562.htm

第一步:解压源码包:

tar  xvzf tslib-1.4.tar.gz

cd tslib

第二步:进入tslib之后关键是要设置交叉编译环境(下面是根据我自己的实际情况所添加的)——如果不设置交叉编译环境,在移植到开发板时,执行./ts_calibrate程序时会出现以下错误:

./ts_calibrate: line 1: syntax error :”(” unexpected.

$export PATH=$PATH:/usr/local/arm/4.3.2/bin

$export CC=arm-linux-gcc

$export CXX=arm-linux-g++

设置好交叉编译环境后就可以开始安装了:

执行./autogen.sh

执行./autogen.sh之后可能会有上述信息出现,但是我的机器上灰常不给力,只是显示出其中几行信息,一开始以为是出错,但是最后还是移植成功,证明这步就算只出现几行信息并无多大关系。

接着执行以下命令:

./configure  --prefix=/usr/local/tslib/  --host=arm-linux  ac_cv_func_malloc_0_nonnull=yes

(1)有些开发板在执行此命令时需要添加—enable inputapi=no或者—enable input=no,至于是哪一个就需要根据tslib目录下的configure文件才可以知道。(建议这个文件还是看一下)。由于友善之臂mini2440的触摸屏驱动是支持ioctl操作的(在内核移植时做触摸屏驱动时可以看到源码中是支持ioctl的),因此我在这里并没有加上—enable inputapi=no.

(2)如果没有加上ac_cv_func_malloc_0_nonnull=yes会出现交叉编译错误:undefined reference to `rpl_malloc'. 这是由ac_cv_func_malloc_0_nonnull检查引起的,为了不让它检查,产生一个cache文件daiq_tslib.cache,欺骗configure再执行:因此为了编译的顺利进行,在配置的时候需要加上这一句:ac_cv_func_malloc_0_nonnull=yes

最后执行make & make install就可以在指定的路径上成功安装tslib。我的指定路径是/usr/local/tslib/,在这个文件下安装成功的话会有四个目录:lib/  etc/  include/  bin/. 

安装好tslib之后将动态链接库文件拷贝到根文件系统中,(注意tslib依赖的是动态链接库文件),如果忘记拷贝动态链接库的话会出现以下错误:

拷贝进去之后需要在自己的根文件系统的/etc/profile(在文件的一开始添加下面的内容)设置tslib的环境变量(要根据自己的实际情况来设置),下面是我的开发板所设置的有关tslib的环境变量:

# Ash profile

#vim syntax=sh

#No core files by default

echo 'Set ENV for tslib......'

export  QTDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm(文件系统中QT的安装目录)

export TSLIB_ROOT=/usr/local/tslib   (tslib的目录)

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/input/event0

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal

export POINTERCAL_FILE=$TSLIB_ROOT/etc/pointercal

export  QWS_DISPLAY=LinuxFb:dev/fb0

export set QWS_SIZE=320x240

export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH

echo “the env is successful”

当配置好这些环境变量后下载到开发板,执行./ts_calibrate时如果出现:

ts_open: No such file or directory

说明环境变量设置有问题,可以用env命令查看一下有没有你刚才设置的环境变量。在设置环境变量这一个环节上是比较重要的,要保证在每一个目录下都存在你需要用到的文件。

如果移植成功:

cd /usr/local/tslib/bin   

./ts_calibrate    校准触摸屏

./ts_test         测试触摸屏


补充:tslib环境变量配置说明:

在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。
Tslib 是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。在 Qtopia 4.*版本中,默认的Tslib版本为Tslib 1.4。在Qtopia 2.*版本中,默认的Tslib版本为Tslib 1.3。

在嵌入式中,由于触摸屏的种类多样、质量不一,采用Tslib 的参考配置往往无法获得较好的触摸屏触摸效果,同样需要经过大量的测试才能得到满意的配置参数,恶劣情况下,甚至需要对Tslib 的算法进行进一步的优化。下面就Tslib 的环境变量、配置文件等进行简要的介绍。

1)环境变量
为了实现Tslib 的正确运行,需要对如下的Tslib 的环境变量进行配置:

2)TSLIB_TSDEVICE //触摸屏设备文件名
Default (no inputapi): /dev/touchscreen/ucb1x00
Default (inputapi): /dev/input/event0
TSLIB_CALIBFILE //校准的数据文件,由ts_calibrate 校准程序生成
Default: ${sysconfdir}/pointercal
TSLIB_CONFFILE //配置文件名
Default: ${sysconfdir}/ts.conf
TSLIB_PLUGINDIR //插件目录
Default: ${datadir}/plugins
TSLIB_CONSOLEDEVICE //控制台设备文件名
Default: /dev/tty
TSLIB_FBDEVICE //FrameBuffer设备名
Default: /dev/fb0

3)       以上环境变量在实际开发中的实际配置可以根据实际情况决定。

4)       2)配置文件
除了环境变量以外,Tslib 的配置文件ts.conf 同样是个十分重要的部分,在ts.conf 中配置了需要加载的插件、插件加载顺序以及插件的一些约束参数,这些配置参数对触摸屏的触摸效果具有十分重要的影响。
下面是Tslib 1.4 中的ts.conf 的参考配置:

5)# Uncomment if you wish to use the linux input layer event interface
# module_raw input

# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d
# module_raw collie

# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860
# module_raw corgi

# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface
# module_raw ucb1x00

# Uncomment if you're using an HP iPaq h3600 or similar
# module_raw h3600

# Uncomment if you're using a Hitachi Webpad
# module_raw mk712

# Uncomment if you're using an IBM Arctic II
# module_raw arctic2

module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear

6)       其中 pthres 为Tslib提供的触摸屏灵敏度门槛插件;variance 为Tslib提供的触摸屏滤波算法插件;dejitter 为Tslib提供的触摸屏去噪算法插件;linear 为Tslib 提供的触摸屏坐标变换插件。

7)       tslib 的实际配置:

8)       去掉module_raw input前面的#号,同时把其他#号注释项全部删除,以免给后来的操作带来麻烦。我的最终ts.conf 内容为:

module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear

 

在执行校正程序时(如./ts_calibrate或./ts_test)可能出现的错误:

1:运行./ts_test

No raw modules loaded.

 ts_config: No such file or directory

出现这样的错误提示,可以很明确的告诉你,你的库缺少了一些*.so文件()

ts.conf文件中应该有一行(在配置文件上有很多的raw,但是全部是被注释掉的,但是至少需要打开一个。因为触摸屏是使用input子系统的,所以将module_raw input前面的#号去掉,并且前面不留空格,千万别留空格啊,有一个网友就是因为这个小小的空格搞到他郁闷了很久,幸好我比他醒目,绝不留空格,哈哈。。。。)

module_raw input

/nand1/tslib-1.4/lib/ts目录下应该有个文件叫
input.so(这个文件比较重要,我第二次移植过程中不小心把input裁剪掉了,当插件库$TSLIB_ROOT/lib/ts目录下没有这个文件时会提示如下错误)

No raw modules loaded.

 ts_config: No such file or directory

2:在做测试的时候,运行./ts_calibrate出现了tslib-1.4经典的错误:(出现这个错误你不要沮丧,反而应该高兴,说明你之前的步骤已经全部没错了,只要把这个经典的错误解决就万事大吉了。很庆幸,这个错误有很多网友都已经有办法解决了)

经典错误:

Couldnt load module input

No raw modules loaded

tsconfig: Success

错误分析:那么错误就定位在 ts_config 里。并且可以进一步确定是在加载插件模块时出的错。

阅读了tslib 的源代码,知道了cstdlib 库里的一个函数: getenv

是用来得到指定系统环境变量的值。是为了测试 tslib 是否得到正确的环境变量。

其环境变量默认的值在readme中有注明。

加载插件模块时出出错分析:

ts_calibrate会打开ts_config

ts_config函数里首先会读取 tslib 配置文件(ts.conf,由 TSLIB_CONFFILE环境变量指定,在tslib/etc下面),

然后根据这个文件逐个加载插件库,1.4版本的ts.conf内容为:

Module_raw input   (读readme文件可以找到这个字符串)

module pthres pmin=1

module variance delta=30

module dejtter delta=100

module linear

ts_config又会调用ts_load_module加载库。从这个函数里,程序先是得到配置文件中指定加载的模块名,

然后根据模块名构造了一个 so 文件文件名,然后调用了系统函数 dlopen 加载库!

Linux 下的加载dlopen 类似于 Windows 下动态链接库的函数:dlopen

错误就应该出在构造的库文件名是错误的---其指定的文件不存在

---从而导致 dlopen无法加载。所以才提示找不到文件或目录!

那么这样就是应该把需要的input.so variance.so dejitter.so linear.so应该复制到/tslib/plugins中(上面修正后作了这一步,就可以拉,就不会出现错误拉)

3: [~#]./ts_calibrate.sh

此时会加载tslib中的插件模块input.so,且会抛出Segement fault的错误。在友善之臂的论论上看到使用交叉编译arm-linux-gcc经常会遇到这个问题,不过论坛上也给出了解决办法。仔细分析tslib的源码之后,得知在加载

input.so时,ts_attach.c中__ts_attach_raw()函数中使用NULL指针,导致Segement fault产生。经过修改过,重新

编译tslib,再运行ts_calibrate.sh,一切正常。ts_attach.c中__ts_attach_raw()中的修改如下:
#if 0
 for(next = ts->list, prev=next; next != NULL && next != prev_list; next = prev->next, prev =

next)
 {
  DEBUG('LIUHAO:: %s %s:count=%d prev_list=%x prev=%x next=%x prev->next=%x/n',

__FILE__, __FUNCTION__, count++, prev_list, prev, next, prev->next);
  ;
 }
#else
 for(next = ts->list, prev=next; next != NULL && next != prev_list;)
 {
  DEBUG('LIUHAO:: %s %s:count=%d prev_list=%x prev=%x next=%x prev->next=%x/n',

[1] [2]
关键字:交叉编译  QT4  Mini2440 引用地址:交叉编译tslib1.4过程详述,配合QT4.5.3成功在Mini2440运行成功

上一篇:字符驱动设计----mini2440 LED驱动设计之路
下一篇:Linux中SPI子系统图解和mini2440下的SPI驱动移植

推荐阅读最新更新时间:2024-11-08 16:48

STM32CubeMX(Keil5)开发之路——6外部中断
运行环境 Windows10 STM32CubeMX___Version 5.0.0 Keil5(MDK5)___Version 5.15 简介 本例程主要讲解如何设置外部中断,采用中断的方式按键是否按下,在中断中进行打印数据。 STM32CubeMx基本配置 基础配置过程请参考 STM32CubeMx(Keil5)开发之路—配置第一个项目 STM32CubeMx 外部中断配置 查看电路图,如下图所示 K1——K3为外部输入引脚,连接PE2——PE4,并且按下按键时为低电平,因此待会儿需要设置为下降沿触发 为了方便调试,重定向printf,进行usart设置 1——点击USART1进行设置 2——模式选择Asyn
[单片机]
STM32CubeMX(Keil<font color='red'>5</font>)开发之路——6外部中断
思特威重磅推出5MP高分辨率、高帧率面阵CMOS图像传感器新品,赋能高端工业机器视觉相机
202 3 年 10 月 2 3 日 , 中国 上海 — 思特威(上海)电子科技股份有限公司(股票简称:思特威,股票代码:688213),重磅推出5MP高帧率工业面阵CMOS图像传感器新品——SC535HGS。 这款背照式全局快门图像传感器搭载先进的SmartGS ® -2 Plus技术 ,依托思特威卓越的模拟电路设计,结合优异的PixGain技术和单帧拐点HDR技术,集高量子效率(QE)、低噪声、高动态范围(HDR)、高帧率四大性能优势于一身。作为思特威高性能工业级机器视觉应用系列最新产品,SC535HGS可广泛适用于工业检测场景,确保无失真的成像和高速的图像采集性能,为高端工业机器视觉应用带来了更精确、高效的视觉检测、质量控制
[工业控制]
思特威重磅推出<font color='red'>5</font>MP高分辨率、高帧率面阵CMOS图像传感器新品,赋能高端工业机器视觉相机
KUKAC4机器人电机风扇故障,使得机器人没有好使能.V2
箱柜冷却系统说明: 箱柜冷却装置包含两条冷却循环回路。装有控制、功率的箱内范围通过一个换热器进行散热。在箱柜的外部区域,KPP 和 KPS 的低压件、镇流电阻和散热体则直接通过外部空气适当冷却。 1外部风扇进气口 2低压电源散热器 3带KPP 8换热器的空气出口 4 KSP 9吸入管CCP的空气出口 5带KSP 10 PC风扇的空气出口 6热交换器空气出口 7过滤器空气出口 外部风扇更换步骤 1. 从控制柜拔出风扇插头(2) X14。 2. 拧松四条螺丝(1) 并将背板拆出。 3. 将进线套筒的固定螺丝(1)拆出。 4. 将进线套筒(2)折回,然后拉出
[机器人]
安波福联手Lyft完成5万次自动驾驶出租车服务
一年前,安波福(Aptiv)与来福车(Lyft)合作在美国拉斯维加斯推出了付费自动驾驶出租车服务。据外媒报道,当地时间5月31日,Lyft宣布其自动驾驶出租车车队已经完成了5万次旅行,也使得该项目成为美国最大的付费自动驾驶项目。 Lyft表示,自2018年5月推出该付费项目以来,其自动驾驶车队的30辆宝马5系轿车已经完成5万多次个人旅行。此类汽车配备了安波福公司的软件、传感器、计算机以及一个增强型电力系统,但是也都配备了安全驾驶员,拉斯维加斯的居民可以使用Lyft应用程序呼叫此类汽车。虽然谷歌母公司Alphabet旗下自动驾驶子公司Waymo也在凤凰城郊区运营一个规模稍大的付费型自动驾驶出租车车队,但是只有预先注册的大约1000名
[机器人]
基于stm32CubeMX和keil5的stm32f103学习编程
0. 准备 先用st-link连接stm32核心板与PC,用于烧录 St-link Stm32 3.3V 3.3V GND GND SWDIO DIO SWCLK DCLK 再用USB串口板连接,用于查看串口输出 USB Stm32 RX TX(A9) TX RX(A10) 安装完成驱动并连接好以后,进入设备管理器可以看到它们都已被识别。 打开putty.exe,选择串口连接,用于查看之后的串口输出。 1. 编写Cube程序,配置UART0为9600,8n1,上电后向串口输出“Hello”,在PC上通过串口软件观察结果; 安装完成并打开CubeMX软件,选择New P
[单片机]
基于stm32CubeMX和keil<font color='red'>5</font>的stm32f103学习编程
5G行业热背后:商业模式还没有成型
中国移动方面在7月初的各种公开场合中对外宣布,今年将建成超过5万个5G基站,在超过50个城市实现5G商用服务,并到2020年在所有地级以上的城市提供普及商用。 某家不愿具名的设备商相关人士杨修(化名)告诉《中国经营报》记者,仅上海市的4G基站就已将近2万个,5万个基站的目标实则“杯水车薪”。据公开数据,截至2018年12月31日,中国移动4G基站数达到241万个,中国电信和中国联通4G基站保有量分别为138万个和99万个。 今年6月6日,三大运营商和中国广播电视网络有限公司获得5G商用牌照,一时之间,5G掀起行业热,三大运营商与其他行业的企业组建产业联盟,推动5G与工业互联网、人工智能、车联网、AR/VR等领域的融合。 在杨修看来
[手机便携]
Gartner:再4年 穿戴装置超越智能手机
   行动通讯世界大会(MWC)将于2月22日开展,国际研调机构Gartner公布最新预测数据,预估数据显示,2020年将是科技产业发展的分水岭,穿戴式装置营收将超越智慧型手机市场,规模可达617亿美元。 3年前开始,各大品牌厂陆续推出智慧手表产品,但销售始终不如预期。不过,根据Gartner预估,2015至2017年间,受到苹果推动穿戴式装置普及成为生活时尚潮流,智慧手表产品将成长三成,营收有潜力达到17.47亿美元;智慧腕带也会受到美国推行各项保健计画而受到重视。 Gartner预估,至2020年,穿戴式电子装置销售量可望达到4亿7,775万件,且将会创造617亿美元的营收,其中的137亿美元将来自健身相关的穿戴式装置。
[手机便携]
1.裸机开发环境的体验(Redhat 6.4 + vbox)
一、裸机开发的一般流程 注意:这是假定你已经搭建好了裸机开发环境 我们裸机的一般开发流程:图1-1: 图1-1 裸机开发流程 由于在这篇文章里是体验裸机程序,所以我们跳过了1、2步骤。直接从第三步开始: 二、交叉工具链的安装: 在这里,我们编写的程序是要在开发板运行的,不是在pc机,所以pc机的gcc等编译器不再适用了,我们必须按照交叉工具链。由于我们的程序是要在ARM架构运行的。所以安装的工具链是arm-linux-*的工具链。 我们的工具链包放在/home/ARM-tools里的:arm-linux-gcc-4.3.2.tgz。如图1-2: 图1-2 接下来是解压,就是安装,我们把它解压到/usr/local目录下:使
[单片机]
1.裸机开发环境的体验(Redhat 6.4 + vbox)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved