c语言硬件操作_c语言 硬件
1.不在硬件上移植操作系统,直接用C语言编写应用程序移植到硬件上,需要做那些工作?才能实现其功能。
2.判断题1. C语言的一个特点是可以对计算机硬件进行操作 ( ) 2. 在循环过程中,使用break语句和continue语
3.C语言为什么可以为智能手机编写操作系统(Android)?PC机和智能机的CPU指令系统一样吗?比
4.C语言能做什么?
5.单片机问题 单片机的硬件 在c语言里面都怎么表示 c语言都通过哪些方式 控制这些硬件
6.c语言可以直接对硬件操作吗
7.linux系统编写驱动时,怎样用C语言去访问硬件
1.指针变量p分配在栈上,而字符串"abcdefg"分配在文字常量区。
2.是的。指针也是编译器生成的数据类型,是个长整型。
3.内存地址分为5块,堆区,栈区,全局(静态)数据区(分为未初始化和初始化区),
文字常量区,代码区。存储在不同区域的数据释放时间不同,存储在堆区的数据必须由程序员负责释放,用free或者是delete。而栈区的由系统自动释放。全局和静态的生存期就是整个程序运行期。
4.首先,概念性错误,编译器并不执行程序,执行程序的是你的系统。编译器只是实现了高级语言向机器语言的转化而已。至于计算机的工作原理,这个概念也太泛了,有硬件层也有软件层。硬件层基本也就是80x86的汇编和内存管理,软件层也就是操作系统了,请问你想知道什么?
5.a是数组名,最重要的是a是一个指针常量,你该了解了吧,常量是不能参与指针运算的,所以a++是错的。关于calloc和malloc,释放内存方面没什么区别(这个是个人观点)。
关于指针变量没有初始化的问题。其实指针本身也是个长整行的变量,他存放的地址完全可以理解为4*8的整数,那么他的分配方式也跟普通的变量一样了。如果你是全局指针,那么编译器会把它自动初始化为00000000(十六进制),如果是局部指针,那么这个量就是未知的了,根据函数堆栈有不同的结果。null也就是内存被写成了00000000(十六进制).这个空不是说不存在,而是内存被写成了4*8=32位的全0.
不在硬件上移植操作系统,直接用C语言编写应用程序移植到硬件上,需要做那些工作?才能实现其功能。
区别如下:
(1)两者编译组成不同。汇编语言是将由0、1组成的机器语言用具有简单语义的英文代码表示,而C语言不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等。
(2)两者被计算机识别的路径不同。汇编语言通常用于对硬件的直接操控。而且C语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行。
(3)两者用处不同。汇编语言通常用在程序中最核心的、控制硬件的代码,一方面是安全,另一方面提高运行速度。而C语言通常用在计算机外用功能上。
(4)两者学习难易程度不同。汇编语言所需要的编绘知识很多很复杂,经常被开发者使用。而C语言是一门很简单方便的语言,编程者也就不需要有太多的专业知识。
计算机语言(Computer Language)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。计算机语言从低级到高级可以分为:?
(1)机器语言,即由0、1组成的机器硬件可以识别的语言;?
(2)低级语言,即汇编语言?
(3)中级语言,如C语言?
(4)高级语言,如C++,JAVA,C#等。
扩展资料:
如今通用的编程语言有两种形式:汇编语言和高级语言。
汇编语言和机器语言实质是相同的,都是直接对硬件操作,只不过指令用了英文缩写的标识符,容易识别和记忆。源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
高级语言是绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于低级语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如流行的vb、vc、foxpro、delphi等,这些语言的语法、命令格式都各不相同。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:解释类和编译类。
参考资料:
判断题1. C语言的一个特点是可以对计算机硬件进行操作 ( ) 2. 在循环过程中,使用break语句和continue语
以ARM来说吧,首先要写异常向量表,然后是配置时钟,再然后中断设置,等等,再然后跳进main函数
这个main函数里面你可以什么都不要写,就在结尾用一个while(1);死循环
然后当产生中断的时候,进入中断模式,你可以在中断函数中写相应的功能函数
比如当你按下触摸屏,就会产生中断,你在中断函数中进行触摸屏绘制屏幕,这样就实现了手写功能。
当然如果做一个好点的系统,中断里面尽量简单些,可以在外面生成一个队列,中断的时候就往队列里放一些回调函数的代号,然后中断立刻退出。而main函数就一直遍历时间队列,如果队列里面有序号,就去调用响应的回调函数,这样就是一个简单的系统了
C语言为什么可以为智能手机编写操作系统(Android)?PC机和智能机的CPU指令系统一样吗?比
1,对,这是 c语言的一个特点,那些左移,右移,&,|,都是对硬件进行的操作;
2,错。自己找一下就明白了。
3,对
4,就算是对吧,我总感觉哪里说得不太对,
5,对
C语言能做什么?
一、C语言为什么可以为智能手机编写操作系统(Android)?
答:C语言的语法设计,使得C语言可以直接操作硬件,例如C语言的指针,就是直接操作内存的。直接操作硬件的好处,就是操作硬件的速度非常快,因此,Android里面但凡是涉及到硬件操作的事情,都交由C语言以及C++语言来做。
二、PC机和智能机的CPU指令系统一样吗?
答:不一样。PC机的CPU一般是X86架构,这种CPU自带的指令多且复杂,能够完成很多复杂的运算;智能机的CPU一般是ARM架构,这种CPU自带的指令比较精简,完成的操作也许没有X86架构的CPU那么复杂。
单片机问题 单片机的硬件 在c语言里面都怎么表示 c语言都通过哪些方式 控制这些硬件
C语言是目前世界上流行、使用非常广泛的高级程序设计语言。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。
常用的编译软件有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,Microsoft C,High C,TurboC等等... 嗯。依言 2008-07-12 19:26 检举
C语言的发展历史
C语言的发展颇为有趣。它的原型ALGOL 60语言。(也成为A语言)
1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。
1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。
10年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。
而在13年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BGPL的第二个字母作为这种语言的名字,这就是C语言。
为了使UNIX操作系统推广,17年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。
18年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。
1988年,随着微型计算机的日益普及, 出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准 3.C语言的主要特点 。C语言发展迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。用C语言加上一些汇编语言子程序, 就更能显示C语言的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。
C语言的特点
1. 简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
2. 运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3. 数据结构丰富
C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
4. C是结构式语言
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
5. C语法限制不太严格、程序设计自由度大
一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。
6. C语言允许直接访问物理地址,可以直接对硬件进行操作
因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。
7. C语言程序生成代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10へ20%。
8. C语言适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。
当然,C语言也有自身的不足,比如:C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数族下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。
总之,C语言既有高级语言的特点,又具有汇编语言的特点;既是一个成功的系统设计语言,有时一个使用的程序设计语言;既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序;是一种受欢迎、应用广泛的程序设计语言。
c语言可以直接对硬件操作吗
在C语言里,我们一般控制的单片机硬件大多数是特殊寄存器,它们在C语言里的名称跟汇编的一样(注意是大写)。我们可以通过赋值如P1 = 0xff,来控制单片机硬件。我们也可以通过读如status = P1,来得到硬件的状态值等等。
linux系统编写驱动时,怎样用C语言去访问硬件
这个问题有点不好回答,现在的不管是单片机也好,数字处理器也好,图像处理器也好,基本都是C语言来写的了,但是要说C语言能不能直接操作硬件,恐怕还得分情况,因为,上面说的这些芯片都是硬件对吧,还有一些也是硬件比如,你想要控制的门,你想要控制的升降机等等,难道你能说它们不是硬件吗,但是门、升降机离我们所写的C语言很远,可能有时会远到看不见,但不管这些器件或者硬件离得有多远,它们都还得听我们C语言的话不是?C语言可以直接控制这些数字芯片的I/O口,这众多的I/O口,就是终端的控制总部,所以你得分情况看你说的是直接对哪种硬件操作。我也说不准这是直接还是间接。
在linux系统上编写驱动要访问硬件,首先要地址映射,因为有了linux系统后程序中所使用是地址都是虚拟地址,所以需要经过ioremap重映射后得到需要的虚拟地址,然后用ioread32和iowrite32就可以进行读写操作了。如下是led的操作:
int init_led_device(struct led_dev_t *l)
{
l->phys = 0x7F008000;
l->virt = ioremap(l->phys, SZ_4K);
l->gpmcon = l->virt + 0x820;
l->gpmdat = l->virt + 0x824;
return 0;
}
void led_config(struct led_dev_t *l)
{
l->reg = ioread32(l->gpmcon);
l->reg &= ~(0xf << 0);
l->reg |= (0x1 << 0);
iowrite32(l->reg, l->gpmcon);
}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。