嵌入式Linux C基础
Linux环境安装
......
Linux文件和目录命令
-
linux文件系统结构。Linux文件系统就是一个树形的分层组织结构
为了规范文件目录命名和存放标准,Linux基金会颁发了FHS(Filesystem Hierarchy Standard 文件系统层次结构标准),大多数Linux都采用这种文件组织形式,目录结构也都是相似的。
- / bin :bin是二进制(binary)英文缩写。
- / boot :存放的都是系统启动时要用到的程序。
- / dev :包含了所有Linux系统中使用的外部设备。
- / etc :存放了系统管理时要用到的各种配置文件和子目录。
- / lib :存放系统动态连接共享库的。
- / home:普通用户的主目录。
- / root :根用户(超级用户)的主目录。
当打开命令终端窗口时,用户就出在自己的用户主目录位置。
-
pwd命令:
pwd命令用于显示用户在文件系统中的当前位置,该命令没有任何选项和参数,命令执行结果显示为绝对路径名。
linux@ubuntu:~$ pwd /home/linux
-
ls命令:
列目录内容
-
cd命令:
改变目录
-
Cat命令:
查看文件内容
-
cp命令:
文件复制
-
mvml:
文件移动
-
touch命令:
创建或更新时间戳
-
rm命令:
删除
-
mkdir命令:
创建目录
使用#man+命令 可以查看某个命令的语法和选项以及解释
Vi
计算机基础
-
冯·诺依曼模型
-
计算机硬件由输入、输出设备,存储器、运算器和控制器组成。
-
存储程序的思想:系统的运行过程就是按照一定的顺序不断执行存储器中的程序指令的过程
-
-
存储器的分类
-
主存储器即内存。程序中待处理的数据和处理的结果都存储在内存中。
-
外存储器是用来长期保存数据的大容量存储器。
-
寄存器是CPU内部的高速存储器,速度快,数目少。
-
-
程序:广义上讲,为了实现一个特定的目标而预先设计的一组可操作的工作步骤,称之为一个程序。
程序就是系统可以识别的一组有序的指令。存储在磁盘上,被加载到内存中执行。
-
程序设计语言的发展:机器语言->汇编语言->高级语言
- 机器语言:直接使用机器指令(0,1序列)来设计程序,可以被计算机系统直接识别。和自然语言完全不同,难于记忆和理解,工作量大,效率低,无法移植。
- 汇编语言:l把机器指令符号化,即通过一组简单的的符号来表示机器指令,更接近于自然语言,更容易理解和使用。 和机器语言一样,开发工作量大,无法移植。
- 高级语言:和特定的计算机系统无关,更接近于人类自然语言。一条语句对应多条机器指令,工作量小,开发效率高。 BASIC , FORTRAN, PASCAL, C, C++ ,Java,C#等。
-
程序设计步骤
数据表示
-
计算机数据表示
- 送入计算机的数字,字母,符号等信息必须转换成0、 1组合的数据形式才能被计算机识别。
- 能够进行算术运算得到明确数值概念的信息成为计算机数值数据,其余的信息成为非数值数据。
-
数值数据的表示:十进制、二进制、十六进制和八进制。
-
原码、反码、补码。正数的原码补码和反码是一样的,负数多了符号位(0表示正,1表示负),负数的反码是原码除了符号位取反,补码则是取反加1。
-
非数值数据表示
- 非数值数据包括文字、符号、图像、语言和逻辑信息等,也都是以0、1形式存在。
- 字符数据在机器内也被变换成二进制编码的形式。国际上普遍采用的一种编码是美国国家信息交换标准代码,简称为ASCII码。
程序编译和调试
-
gcc编译器:gcc(GNU Compiler)是GNU推出的多平台编译器,可将C、C++源程序编译连接成可执行文件,支持以下后缀:
- .c c语言源代码
- .h 程序所包含的头文件
- .i 已经预处理过的C源代码文件
- .s 汇编语言源代码文件
- .o 编译后的目标文件
-
#gcc –o hello hello.c
-o 输出可执行文件
-c 只要求编译器输出目标代码(.o文件),而不必输出可执行文件
-g 用于调试
./hello 查看输出结果
-
程序调试
- GDB
- 利用__FILE__,__LINE__,__FUNCTION__实现代码跟踪调试
#include <stdio.h> int main(int argc,char **argv) { printf("%s,%s,%d\n",__FILE__,__FUNCTION__,__LINE__); return 0; }
-
嵌入式开发的程序要在板子上运行,在PC机上编写的程序可以通过串口等一些特殊的方式将其传过去,上述gcc编译的是
x86
处理器的程序,如果要放到ARM板子上运行则要使用适用于ARM
的gcc编译器。