2016.7.7
硬件平台:CPU(51,avr,ARM(ARM7,ARM9,ARM11,cotex-A),mips,powerpc,X86)
软件平台:windows,linux,android,ios,Vxworks,wince,ucosii
操作系统作用:管理资源
资源(硬件资源,软件资源)
直接控制
操作系统不变,硬件无论怎么变,
软件都不变。
嵌入式技术,在已有的硬件平台上移植操作系统,{操作系统核心(内核)},做相应的开发。
软件部分 (应用软件 android ios, java , LinuxC)
操作系统部分 驱动bsp内核
操作系统的优点1.软件移植性
2.软件开发人员不需要再熟悉硬件工作原理
3.提供多任务机制(进程&线程)
4.提供丰富的网络协议栈
5.提供很多开源的工具库,以及软件
单片机1.总线:spi,iic,pci,usb
2.外围设备:时钟,lcd。Flash wifi ,蓝牙,ram;示波器,逻辑分析仪,万用表
嵌入式操作系统分类
1.按收费模式划分
A.商用型:Uxworks,(军用)Nucleux,Plamos,Symbian,WinCE(计费系统),QNX,pSOS, URTX, Lynxos,Hopen,DeltaOS
B.免费型:Linux,μCLinux,μC/os-Ⅱ,eCos,uITRON
2.按照实时性划分(规定时间内完成规定的任务)
A.硬实时:Uxworks
B.软实时:WinCE,RTLinUx
C.无实时:EmbeddedLinUx
GPL协议
GNU GNU is not unix
POSIX 在POSIX标准下,开发软件,既可以在Unix运行,又可以在Linux运行。
GNU CC 简称(gcc)是GNU项目中符合 ANSI C标准的编译系统,能够编译用c,c++,和object c等语言编写的程序。
gcc是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件。
1.预处理→2.编译→3.汇编→4.链接
1.预处理阶段分为A..头文件展开(加载)B.宏替换C.条件编译 预处理阶段不做语法检查
以#号开头的代码都是在预处理阶段处理
-c 为到编译阶段停止
-c 会把add.c 变为 add.o(即为会把.c文件变为.o文件)
-o 重起名
2.编译阶段:①语法检查②词法分析
3.-s汇编
Gcc -s hello.c 生成hello.s文件
-w:关闭所有的警告信息
-Wall:显示所有类型的警告信息
双引号 在当前目录中找,再到系统目录中找,找不到报错 usr/include为系统目录 其中/为根目录
尖括号 先在系统目录找,找不到报错
-Iinclude 其中的第一个I为指定include的目录,以及I为第三方搜索路径
库函数
库文件:看不到库文件里定义的函数和变量,但是可以使用
1.静态库.a :在编译时将库文件里的代码搬迁到执行文件里;
2.动态库.so:在执行时将需要的库文件里的代码搬迁到可执行文件里;
静态库与动态库的优缺点分析?
1.静态库拥挤,动态库轻松
2.静态库效率高,静态库效率低
3.静态库代码升级麻烦,动态库代码升级容易
4.静态库易于布局,动态库升级比较麻烦
5.静态库编译快,动态库编译慢
使用:平台升级用动态库,编译效率高用静态库
printf scanf strcpy ----libc.a libc.so
其中lib是前缀,c为库名,a为后缀
sin------libm.a libm.so
-l 后面跟的是库名
ar rcs libadd.a add.o 是吧add.o封装到库libadd.a里
gcc main.c -ladd -L
-L:指定库的搜索路径
./a.out 输出
.指当前目录
./后面加文件名表示执行当前目录下的此文件
gcc -shared -fPIC add.c -o libadd.so 变动态库
gcc mian.c ./libadd.so -o add 调用