显示标签为“嵌入式”的博文。显示所有博文
显示标签为“嵌入式”的博文。显示所有博文

2009年5月4日星期一

[转贴]关于__irq 的使用


__irq为一个标识,用来表示一个函数是否为中断函数。对于不同的编译器,__irq在函数名中的位置不一样,例如:

ADS编译器中 : void __irq IRQ_Eint0(void);
Keil编译器中 : void IRQ_Eint0(void) __irq;

但是其意义一样,它所完成的任务是标识该函数为中断函数,在编译器编译是调用此函数时,先保护函数入口现场,然后执行中断函数,函数执行完毕,恢复中断现场,这整个过程不需要用户重新编写代码来完成,由编译器自动完成。因而这也给不具备中断嵌套功能的ARM系统带来了问题,若使用 __irq 时有中断嵌套产生,这现场保护就会混乱。在前一篇日志“LPC2000系列中断嵌套处理”中,自己编写中断入口现场保护代码,并不使用 __irq 标识符号,就是这个原因。
总结如下:
1、若不想自己编写中断入口现场保护代码,而且使用中无中断嵌套,在中断函数中用 __irq 来标识我们的中断函数,否则出错;
2、若程序中要使用中断嵌套,对于无中断嵌套功能的ARM来说,一定要自己编写中断入口现场保护代码,而且不能用 __irq 标识我们的中断函数,否则出错。

arzhiy
2007-01-30

2009年4月12日星期日

[转贴]嵌入式核心书籍

Linux基础
1、《Linux与Unix Shell 编程指南》

C语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata著
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)著
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》

Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明著

研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)

硬件基础
1、《ARM体系结构与编程》杜春雷著
2、S3C2410 Datasheet

英语基础
1、《计算机与通信专业英语》

系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明著
3、《Building Embedded Linux Systems》

理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O'Hallaron著
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》

2009年4月8日星期三

VirtualBox中串口的设置

在嵌入式开发中使用虚拟机一般都使用Vmware,今天尝试使用Virtualbox。
在虚拟机内需要使用串口时,当真实PC的环境为LINUX时,一般串口地址填写为“/dev/ttyS0”,其中数字0自由定义。
可当外围环境是windows时,我填这个却不对,也应当不对。查了半天中文资料,也没查到该填什么,终于今天在一篇英文文档中发现答案,很简单,填写“COM1”,其中数字1也是根据环境自由定义。

2009年4月6日星期一

配置gdbserver时的错误

arm-linux-gdbserver的编译安装时,在执行
./configure -- target=arm-linux --host=arm-linux
总是出现C compiler cannot create executables的错误
最后发现是arm-linux-gcc版本的事情,原来时3.2,现在换成3.4.1就OK了~

2009年4月5日星期日

嵌入式开发中Ubuntu下NFS文件系统安装和调试

Ubuntu下NFS文件系统安装和调试---findfunaax
环境:
NFS服务器:虚拟机下Ubuntu8.04(IP:192.192.192.101)
连接端:英倍特目标机Linux(IP:192.192.192.100)

1、安装NFS服务器
首先在虚拟机内安装NFS,在终端内输入命令:
sudo apt-get nfs-kernel-server

2、修改NFS配置文件
-------------------------------------------------------------------------------------------------------------------------------
在终端内输入:
sudo gedit /etc/exports
在打开的文本编辑器内最后添加一行NFS共享目录信息,格式如下:
[分享目录] [主机名称1/ip1 (参数1,参数2)] [主机名称2/ip2 (参数3,参数4)]
例如我的共享目录是/home/aax/NFSdir,可访问主机为任意,添加如下
/home/aax/NFSdir *(rw,sync,no_subtree_check)
保存关闭
-------------------------------------------------------------------------------------------------------------------------------
配置/etc/hosts.deny (禁止任何host(主机)能和你的NFS服务器进行NFS连接)
在终端内输入:
sudo gedit /etc/hosts.deny
加入:
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
保存关闭
-------------------------------------------------------------------------------------------------------------------------------
配 置/etc/hosts.allow 允许那些你想要的主机和你的NFS服务器建立连接。
在终端内输入:
sudo gedit /etc/hosts.allow
加入:
portmap: 192.192.192.
lockd: 192.192.192.
rquotad: 192.192.192.
mountd: 192.192.192.
statd: 192.192.192.
关闭保存


3、重启NFS服务器
sudo exportfs -r
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-kernel-server restart
如果不报错误,就OK了

4、在目标机上输入命令挂载至目录/mnt/nfs,目录必须存在且为空
mount -t nfs 192.192.192.101:/home/aax/NFSdir /mnt/nfs
如果没报错,说明挂载成功