从Cortex-M0编程方法到ARM9编程方法思想转变------定义命令
2012-08-01 17:12
211 查看
最近一直在看ARM9编程,买了一块开发板,卖开发板的商家和我说,“板子不跑Linux,那就不叫嵌入式编程”。我听了之后很是纳闷,那以前学的是什么?不都白学了。
已经研究嵌入式Linux编程有一段时间了,慢慢的有点明白了嵌入式Linux编程方法和思想,但是不能窥其全貌,就在今天下午,慢慢的理解了一个知识点,写下来和大家分享。
在嵌入式Linux编程中,有个非常重要的函数叫做:ioctl(),上面一篇文章已经把ioctl()中的定义命令的头文件展现给大家了,很多人会觉得很烦人,一堆宏定义,而且要这个有什么用,其实笔者一直也这样想,真是烦人,最重要的是不会用,要这个定义命令的宏来干嘛?
今天在调试一个程序的时候(都是大牛写好的,我等菜鸟只能一边看大牛的程序,一边学习),看到了这个定义,结合以前看的视频,总算明白了它的用处,让我们先看点代码:
关于IO之类的宏定义就不详细说明了,这里定义了一个命令,DTUCTRL_POWER,它后面那一串是什么呢?没事我们把它打印出来:
打印结果:DTUCTRL_POWER----40046801
或许一个大家看不出是什么意思,没事,我又定义了几个命令:
并且依旧把他们都打印出来,结果如下:
DTUCTRL_RESET----40046802
DTUCTRL_ONOFF----40046803
DTUCTRL_SYSTEM----40046804
DDTUCTRL_SYSTEM_TOGGLE----6805
聪明的你或许已经看出来,那些乱的很的IO命令到底有什么用,没错,它就是帮我们定义个命令码,以前我们变成的时候,完全可以从0x01,0x02...这样往后定义命令,命令少还可以,如果多的话,就会混在一起,到时候连自己都分不清,而运用这个宏定义,就可以清晰的去定义命令,通过上一篇文章可以知道,Linux将命令32位分成了几个段,每个段赋予不同的值,在通过IO之类的宏定义,生成一个不会重复,而且非常好记的命令
这就是IO这些命令的作用:产生命令码字!按照一定的规律,保证整个系统命令不乱
已经研究嵌入式Linux编程有一段时间了,慢慢的有点明白了嵌入式Linux编程方法和思想,但是不能窥其全貌,就在今天下午,慢慢的理解了一个知识点,写下来和大家分享。
在嵌入式Linux编程中,有个非常重要的函数叫做:ioctl(),上面一篇文章已经把ioctl()中的定义命令的头文件展现给大家了,很多人会觉得很烦人,一堆宏定义,而且要这个有什么用,其实笔者一直也这样想,真是烦人,最重要的是不会用,要这个定义命令的宏来干嘛?
今天在调试一个程序的时候(都是大牛写好的,我等菜鸟只能一边看大牛的程序,一边学习),看到了这个定义,结合以前看的视频,总算明白了它的用处,让我们先看点代码:
#define DTUCTRL_POWER _IOW('h', 0x01, unsigned long) /* cdma power */
关于IO之类的宏定义就不详细说明了,这里定义了一个命令,DTUCTRL_POWER,它后面那一串是什么呢?没事我们把它打印出来:
printf("DTUCTRL_POWER----%x\n",DTUCTRL_POWER);
打印结果:DTUCTRL_POWER----40046801
或许一个大家看不出是什么意思,没事,我又定义了几个命令:
#define DTUCTRL_RESET _IOW('h', 0x02, unsigned long) /* cdma reset */ #define DTUCTRL_ONOFF _IOW('h', 0x03, unsigned long) /* cdma on/off */ #define DTUCTRL_SYSTEM _IOW('h', 0x04, unsigned long) /* cdma system run */ #define DTUCTRL_SYSTEM_TOGGLE _IO('h', 0x05) /* system run trigger */
并且依旧把他们都打印出来,结果如下:
DTUCTRL_RESET----40046802
DTUCTRL_ONOFF----40046803
DTUCTRL_SYSTEM----40046804
DDTUCTRL_SYSTEM_TOGGLE----6805
聪明的你或许已经看出来,那些乱的很的IO命令到底有什么用,没错,它就是帮我们定义个命令码,以前我们变成的时候,完全可以从0x01,0x02...这样往后定义命令,命令少还可以,如果多的话,就会混在一起,到时候连自己都分不清,而运用这个宏定义,就可以清晰的去定义命令,通过上一篇文章可以知道,Linux将命令32位分成了几个段,每个段赋予不同的值,在通过IO之类的宏定义,生成一个不会重复,而且非常好记的命令
这就是IO这些命令的作用:产生命令码字!按照一定的规律,保证整个系统命令不乱
相关文章推荐
- java 编程思想笔记之this关键字(包括一些对方法在内存中的分配的解析) 推荐
- 黑马程序员—编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?定义一个动物类,在动物类(animal)中有一个叫的抽象方法。 写两个子类,一个猫一个狗, * 继承自动物类,并实现相应的抽象方法。
- 【java编程】泛型的几种定义方法
- Java编程思想-equals()方法-短路现象-截尾和舍入
- codeblocks 多线程编程时出现:对pthread_create未定义的引用,解决方法
- 从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
- 关于java编程思想的学习之方法重载
- 编程之美:常见面试题思想方法整理
- 几种常用编程语言的编程思想和方法
- AVR 中定义数据和命令输入方法
- codeblocks 多线程编程时出现:对pthread_create未定义的引用,解决方法
- codeblocks 多线程编程时出现:对pthread_create未定义的引用,解决方法
- 并编程对派出类的功能进行验证。。 轿车类等 派生出自行车类 停车等方法。然后从该类为基类 最大速度。重量等字段以及开车 要求具有速度 定义一个车辆类
- 几种常用编程语言的编程思想和方法 转
- 【Cortex-M0】5 ARM C语言编程
- 在u-boot里面加入自己定义的命令方法
- 【Java编程思想第4版错误记录】Collections.addAll()静态方法与Collection.addAll()成员方法
- 详解keil采用C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法!
- 从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
- java编程思想-方法重载