当前位置:首页 » 编程语言 » 储入式高级c语言65讲
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

储入式高级c语言65讲

发布时间: 2022-11-05 11:29:13

① 嵌入式Linux上的c语言编程实践的目录

第一部分 基础知识
第1章 Linux环境下C语言的开发 2
1.1 Linux下的C语言开发环境 2
1.2 在Linux中使用C语言开发 3
1.2.1 开发流程和开发工具 3
1.2.2 Linux中程序的运行原理 4
第2章 嵌入式环境中的C语言开发 7
2.1 嵌入式C语言的开发环境 7
2.2 嵌入式开发中C语言编程要点 9
第二部分 Linux环境中
C语言的开发环境和工具
第3章 Linux的文本编辑工具VI 12
3.1 VI编辑器概述 12
3.1.1 VI简介 12
3.1.2 VI的工作模式和使用
3.1.2 之前的准备 12
3.1.3 进入和退出VI 13
3.2 VI的增强版VIM 16
3.3 VI编辑器的基本使用方法 17
3.3.1 在屏幕上移动光标 17
3.3.2 插入文本 20
3.3.3 删除文本 22
3.3.4 修改文本内容 25
3.3.5 替换文本内容 27
3.3.6 合并文本内容 30
3.3.7 移动文本内容 30
3.4 VI编辑器的命令和高级操作 32
3.4.1 VI常用命令的列表 32
3.4.2 VI的一些高级的操作和
3.1.2 使用技巧 35
第4章 GCC程序开发工具 39
4.1 GNU工具综述 39
4.2 GCC的编译和连接 43
4.2.1 工程示例 43
4.2.2 编译、汇编和连接 46
4.2.3 动态库 48
4.3 GCC的二进制工具 49
4.3.1 ar(归档工具) 49
4.3.2 readelf(读取ELF格式
3.1.2 文件信息) 51
4.3.3 strings(查看字符串) 54
4.3.4 nm(显示符号信息) 55
4.3.5 strip(删除符号) 57
4.3.6 objmp(显示目标
3.1.2 文件信息) 58
4.3.7 obj(复制目标文件) 63
第5章 make工程管理工具 67
5.1 make和Makefile 67
5.1.1 make机制概述 67
5.1.2 make和Makefile的使用 68
5.2 Makefile使用示例 69
5.2.1 简单的Makefile 69
5.2.2 Makefile中的依赖关系 71
5.2.3 Makefile中使用隐含规则
3.1.2 来编译程序 73
5.2.4 Makefile中指定依赖关系的
3.1.2 编译 76
5.3 自动生成Makefile 78
5.3.1 自动生成Makefile的意义和
3.1.2 相关工具 78
5.3.2 自动生成Makefile的流程 79
第6章 GDB调试工具 85
6.1 GDB简介 85
6.2 使用GDB调试程序 86
6.2.1 基本操作 88
6.2.2 查看命令 90
6.2.3 高级命令 92
6.2.4 attach命令的使用 94
6.3 远程GDB调试 95
6.3.1 本地GDB调试和远程GDB
3.1.2 调试的比较 95
6.3.2 远程GDB调试流程 97
6.3.3 远程GDB调试示例 98
第三部分 库函数
第7章 C语言标准库函数 106
7.1 ISO的C语言标准库函数
7.1 分类 106
7.2 标准格式化输入/输出类函数 107
7.2.1 scanf函数:格式化输入
3.1.2 字符串 107
7.2.2 printf函数:格式化输出
3.1.2 字符串 109
7.2.3 putchar函数:输出字符到
3.1.2 标准输出 111
7.2.4 getchar函数:从标准输入
3.1.2 获取字符 111
7.2.5 putc函数:向文件输出字符 112
7.2.6 getc函数:从文件输入字符 112
7.2.7 gets函数:获得字符串 112
7.2.8 puts函数:输出指定字符串 113
7.2.9 ungetc函数:把字符
3.1.2 写回流中 113
7.3 字符处理类函数 114
7.4 字符串处理及转换函数 116
7.4.1 sprintf函数:格式化输出
3.1.2 字符串到一个缓冲区 116
7.4.2 strcat和strncat函数:
3.1.2 字符串连接 119
7.4.3 strcpy和strncpy函数:
3.1.2 字符串复制 120
7.4.4 strcmp和strncmp函数:
3.1.2 字符串比较 121
7.4.5 strlen函数:获取字符串
3.1.2 长度 122
7.4.6 strchr和strrchr函数:字符/
3.1.2 字符串定位 122
7.4.7 strstr函数:字符串查找 123
7.4.8 strrev函数:字符串逆序 124
7.4.9 strupr和strlwr函数:字母
3.1.2 形式转换 125
7.4.10 strp和strnp函数:
3.1.2 字符串复制 125
7.4.11 memset函数:内存设置 126
7.4.12 memmove函数:内存移动 126
7.4.13 memcmp函数:内存比较 127
7.4.14 memcpy函数:内存复制 128
7.5 数学计算类函数 128
7.6 数据结构和算法类函数 133
7.6.1 bsearch函数:二元搜索 133
7.6.2 lfind函数:线性搜索 134
7.6.3 lsearch函数:线性搜索 135
7.6.4 qsort函数:利用快速排序法
3.1.2 排列数组 136
7.6.5 rand函数:产生随机数 136
7.6.6 srand函数:设置随机
3.1.2 数种子 137
7.7 文件I/O操作类相关函数 137
7.7.1 fopen函数:打开文件 138
7.7.2 fclose函数:关闭文件 139
7.7.3 fgetc函数:从文件中读取
3.1.2 一个字符 139
7.7.4 fputc函数:将一指定字符
3.1.2 写入文件流中 139
7.7.5 fgets函数:从文件中读取
3.1.2 一字符串 140
7.7.6 fputs函数:将一指定的
3.1.2 字符串写入文件内 140
7.7.7 rewind函数:重设文件流的
3.1.2 读写位置为文件开头 141
7.7.8 ftell函数:取得文件流的
3.1.2 读取位置 141
7.7.9 fseek函数:移动文件流的
3.1.2 读写位置 141
7.7.10 fwrite函数:将数据写至
7.7.10 文件流 142
7.7.11 fread函数:从文件流读取
7.7.10 数据 142
7.7.12 remove函数:删除文件 143
7.7.13 rename函数:更改文件
7.7.10 名称或位置 143
7.7.14 freopen函数:重新打开
7.7.10 文件 144
7.7.15 fflush函数:同步缓冲区 144
7.7.16 fgetpos函数:获得文件
7.7.10 位置 145
7.7.17 fsetpos函数:设置文件
7.7.10 位置 145
7.7.18 mktemp函数:建立临时
7.7.10 文件 146
7.7.19 tmpfile函数:临时文件 146
7.7.20 tmpnam:得到临时文件名 147
7.8 日期时间类函数 147
7.8.1 clock函数:获得CPU时间 148
7.8.2 time函数:获得当前日历
7.8.2 时间 148
7.8.3 difftime函数:获得时间
7.8.2 差值 148
7.8.4 gmtime函数:将日历时间
7.8.2 转换成UTC时间 149
7.8.5 mktime函数:将UTC时间
7.8.2 转换成日历时间 149
7.8.6 asctime函数:将UTC时间
7.8.2 转换成字符串 149
7.8.7 ctime函数:将日历时间转换
7.8.2 成当地时间的字符串 150
7.8.8 localtime函数:将日历时间
7.8.2 转换成本地时间 150
7.8.9 strftime函数:转换日期和
7.8.2 时间格式 151
7.9 国际化和本地化函数 152
7.9.1 setlocale函数:本地化控制
7.8.2 函数 153
7.9.2 localeconv函数:本地化
7.8.2 转换 154
7.10 错误处理类函数 155
7.10.1 clearerr函数:清除流中的
7.10.1 结束指示符和错误指示符 155
7.10.2 feof函数:指示文件结束 155
7.10.3 ferror函数:指示文件出错 156
7.10.4 perror函数:输出出错信息 156
7.10.5 errno函数:错误编号记录 156
7.11 其他一些工具函数 157
7.11.1 assert函数:程序诊断 157
7.11.2 长跳转函数 157
7.11.3 可变长的参数控制函数 160
7.11.4 获取结构体成员函数
7.10.1 (宏) 161
7.12 一些标准库中有用的宏 161
第8章 Linux中C语言的扩展库
函数 163
8.1 文件I/O操作函数 163
8.1.1 open函数:打开文件 163
8.1.2 close函数:关闭文件 164
8.1.3 read函数:读文件 165
8.1.4 write函数:写文件 165
8.1.5 lseek函数:文件定位 167
8.1.6 ioctl函数:文件控制 167
8.1.7 flock函数:锁定文件 167
8.1.8 mmap函数和munmap函数:
8.1.8 内存映射 168
8.1.9 create函数:创建新文件 170
8.1.10 p函数和p2函数:
8.1.10 复制文件描述符 171
8.1.11 fcntl函数:改变已打开的
8.1.10 文件的属性 171
8.2 文件权限相关的操作函数 172
8.2.1 access函数:判断是否
8.2.1 具有存取文件的权限 172
8.2.2 chown函数和fchown函数:
8.2.1 改变文件的所有者 173
8.2.3 chmod函数和fchmod函数:
8.2.1 改变权限 173
8.2.4 unlink函数:删除文件 173
8.2.5 utime函数和utimes函数:
8.2.1 改变文件时间 174
8.2.6 umask函数:设置建立
8.2.1 新文件时的权限掩码 175
8.2.7 link函数:建立文件连接 175
8.2.8 stat函数、fstat函数和lstat
8.2.1 函数:获取文件信息 175
8.3 用户组操作函数 176
8.3.1 getgid函数和setgid函数:
8.2.1 获得/设置组识别码 176
8.3.2 getegid函数和setegid函数:
8.2.1 获得/设置有效的组识别码 177
8.3.3 getuid函数和setuid函数:
8.2.1 获得/设置真实的用户识别码 177
8.3.4 geteuid函数和seteuid函数:
8.2.1 获得/设置有效的用户识别码 178
8.3.5 getgroups函数和setgroups
8.2.1 函数:获得/设置组代码 178
8.4 信号类函数 179
8.4.1 kill函数:传送信号给指定的
8.2.1 进程 181
8.4.2 raise函数:信号发送函数 181
8.4.3 alarm函数:设置超时函数 182
8.4.4 signal函数:信号安装函数 182
8.5 进程处理函数 183
8.5.1 getpid函数和getppid函数:
8.2.1 获得进程ID和父进程ID 183
8.5.2 fork函数:建立子进程 183
8.5.3 sleep函数和usleep函数:
8.2.1 让进程暂停执行一段时间 185
8.5.4 exec函数族:找到可执行
8.2.1 文件 185
8.5.5 _ exit函数和_Exit函数:
8.2.1 结束进程执行 188
第四部分 C语言高级编程
第9章 动态内存的堆与栈 190
9.1 程序内存区域的使用 190
9.1.1 静态内存与动态内存 190
9.1.2 C语言中的动态内存 191
9.2 C程序中栈空间的使用 196
9.2.1 参数使用栈空间 196
9.2.2 自动变量使用栈空间 199
9.2.3 程序中较大的栈 201
9.2.4 栈空间的特性 202
9.3 C程序中的堆空间使用 203
9.3.1 分配和释放堆内存的库函数 203
9.3.2 库函数使用 204
9.3.3 堆内存的特性 218
9.4 堆内存和栈内存使用的比较 222
9.4.1 利用返回值传递信息 222
9.4.2 利用参数传递信息 226
9.4.3 堆与栈内存管理的区别 231
第10章 函数指针的使用 232
10.1 函数指针的概念 232
10.1.1 C语言函数的本质 232
10.1.2 函数指针在C语言中的
10.1.2 意义 234
10.2 函数指针的使用 237
10.2.1 函数指针使用初步 237
10.2.2 函数指针的类型定义 240
10.2.3 函数指针作为结构体成员 242
10.2.4 函数指针作为函数的参数 243
10.2.5 函数指针作为函数的
10.2.5 返回值 244
10.2.6 函数指针数组 246
10.3 函数指针使用示例 248
第11章 回调函数的使用 252
11.1 回调函数的概念与作用 252
11.1.1 程序调用的方式 252
11.1.2 回调函数的作用 254
11.2 回调函数的语法 254
11.2.1 简单的回调函数 254
11.2.2 完全角式的回调函数 256
11.3 回调函数的使用 259
11.3.1 qsort中的回调函数 259
11.3.2 atexit和on_exit函数的
10.2.5 注册退出函数 263
第12章 C语言实现对象编程 268
12.1 C语言实现基于对象编程的
12.1 概念与作用 268
12.2 C语言基于对象编程实现
12.1 封装 269
12.2.1 简单的程序示例 269
12.2.2 C语言基于对象编程的
10.2.5 详解 272
12.2.3 C语言基于对象编程与
10.2.5 C++面向对象编程的对比 275
12.3 C语言基于对象编程实现
12.3 部分继承功能 278
12.3.1 利用数据结构的包含实现
10.2.5 继承功能 279
12.3.2 利用私有指针实现继承
10.2.5 功能 282
12.3.3 C语言实现继承的总结 287
12.4 C语言基于对象编程实现
12.4 部分多态功能 288
12.4.1 利用操作指针组的包含
10.2.5 实现多态功能 288
12.4.2 C语言实现多态功能的总结 292
12.5 对C语言实现基于对象
12.5 编程的思考 292
12.5.1 C语言基于对象编程的
10.2.5 特性 292
12.5.2 C语言基于对象编程中接口、
10.2.5 实现和调用者的关系 293
第五部分 在嵌入式
环境下的C语言编程
第13章 C语言程序的内存布局 295
13.1 C语言程序的存储区域 295
13.2 C语言程序的段 297
13.2.1 段的分类 297
13.2.2 程序中段的使用 298
13.3 可执行程序的连接 301
13.3.1 可执行程序的组成 301
13.3.2 各个目标文件的关系 303
13.3.3 连接错误示例 304
13.4 C语言程序的运行 309
13.4.1 RAM调试运行 311
13.4.2 固化程序的XIP运行 312
13.4.3 固化程序的加载运行 313
13.4.4 C语言程序的运行总结 315
第14章 嵌入式C语言常用语法 317
14.1 内存指针操作 317
14.1.1 内存操作的意义 317
14.1.2 使用指针操作内存 319
14.1.3 volatile的使用 324
14.1.4 嵌入式系统指针的实际
10.2.5 应用 325
14.2 位操作 327
14.2.1 位操作的意义 327
14.2.2 位操作的语法 328
14.3 大小端与对齐问题 330
14.3.1 大小端问题 331
14.3.2 内存对齐问题 335
14.3.3 结构体成员的对齐问题 338
14.4 程序的跳转 344
14.4.1 嵌入式系统程序跳转的
10.2.5 类型 344
14.4.2 C语言中实现程序的跳转 345
第15章 嵌入式C语言编程的技巧 348
15.1 程序的优化技巧 348
15.1.1 循环缓冲区 348
15.1.2 查表法 350
15.1.3 针对循环执行效率的
10.2.5 优化 353
15.2 关于小数运算 355
15.3 函数参数和返回值的传递 357
15.4 变量的初始化技巧 360
15.4.1 数组的初始化 360
15.4.2 结构体的初始化 362
15.4.3 变量的初始化总结 362
15.5 程序的调试和宏使用的技巧 363
15.5.1 打印文件、函数和程序行 363
15.5.2 #:字符串化操作符 364
15.5.3 ##:连接操作符 366
15.5.4 调试宏的第一种定义方式 367
15.5.5 调试宏的第二种定义方式 368
15.5.6 对调试语句进行分级审查 369
15.5.7 条件编译调试语句 370
15.5.8 使用do…while的宏定义 372
15.6 代码剖析 373
参考文献 378

② 有没有嵌入式开发的学习路线,越详细越好

一、学习路径
万丈高楼平地起,不管多优秀的工程师都是从小白开始的。一条清晰合理的学习路线能帮助小白们高效率的完成基础知识的储备工作,注意这里是知识的储备过程,而经验是从实践中得到的。学习路径是多种多样的,不同能力和不同基础的人有不太相同的路径,这里分享我自己的学习路径,供大家参考。
1.了解计算机原理,操作系统基础知识。了解硬盘,内存和CPU的关系,程序是如何加载到内存运行的,了解操作系统进程切换和时间片的概念。
2.学习C语言,掌握编译器基本知识,能编写简单的程序。学习硬件相关知识。
3.购买洞洞板或者面包板,配合stm32等单片机核心板及相应教材,实践IO操作,中断,定时器,ADC,UART通信,IIC通信,SPI通信,CAN通信等基本功能。在此过程中不断巩固提升C语言编程水平。
4.掌握了某一种单片机的基本编程和控制后,可以进军嵌入式操作系统的学习。在此期间可以继续使用STM32核心板,加购LCD串口液晶显示屏,不需要买带字库的显示屏,简单实用的串口显示屏就可以。然后可以从Free RTOS开始学习,这个操作系统代码少,概念清晰,易于学习操作系统的原理,也易于移植,基本上可以参考官网以及网络上的资料顺利的将操作系统移植到STM32核心板。通过FreeRTOS,可以学习嵌入式操作系统的基本原理,并可以编写LCD驱动程序来感受硬件驱动程序的概念。
5.学习嵌入式Linux操作系统,购买ARM9或以上版本的主控的开发板,要求开发板上至少有串口和网口。学习板级支持包的开发,交叉编译,GDB调试,UBOOT移植,内核移植,根文件系统制作,设备树,驱动程序编写,网络编程相关知识。
6.学习物联网相关模块的使用,可以购买ESP32核心板进行wifi,蓝牙的模块控制学习,购买其他模块实现其他小项目的练习。
通过上面的一番闭关修炼,你已经学习了嵌入式开发的主要知识架构,接下来就要多做小项目,多练习排错,才能不断积累经验。

二、学习方法
1.先整再零:
对于一个实例项目,先从整体出发,保证调通,能正常运行,出现预期结果。遇到模糊的问题先跳过,整体有了一定认识后再对个别细节进行深入了解,但不能跳过深入了解细节的环节。
2.边学边练:
开发是一类实践性很强的技能,嵌入式开发要与硬件打交道,就需要更多的动手操作和观察。
学习某一方向的嵌入式开发知识时,需要给自己的学习进行必要的“投资”,购买面包板、洞洞板、万用表、调温烙铁套装、各种器件、芯片,以至开发板。以上材料不需要一次性都买齐,可以按照当前学习的内容分阶段购买,经济条件有限的同学也不用担心,以上材料的开销除开发板之外都不贵,可网络购买。对于开发板,可以买学长学姐的二手板卡,能过测试就证明板卡是OK的。
有了学习材料,就要学以致用,例如今天学习了三极管做开关,就可以自己动手画画电路图,然后在洞洞板上实践一下,通过实际操作,加深印象的同时,也能验证自己的设计方案。
3.勤于思考和提问,网络如此发达,提问的能力和技巧我就不再赘述了。

三、技能提升建议
如果你进入的是一家规模较小的公司,那么你可能有机会接触各类技术。这是绝佳的锻炼机会,要注意不要特别深入某一方向而不关注其他技术,要知道大牛需要的是多方位的技能。
大公司的话,往往分工比较细致而明确,那就需要在完成自己工作的同时多关注项目组中其他同事遇到的问题,能协助解决最好,不能解决的要关注解决的情况和方法,多蹭经验。帮助别人的同时就是在帮助自己提高,多花时间处理实际问题是难得的经验。
不管在哪种场合工作,一定注意经验的积累,好记不如带墨,要用文字将经验记录下来,将遇到的问题详细描述清楚,没事的时候翻看一下,工作时间长了,你会发现这是一笔难得的财富。
限于篇幅,这里就不再多讲技术的细节了,希望各位读者在技术成长的过程当中都能有自己清晰的学习路径,安排好自己的学习计划,稳扎稳打!

③ 嵌入式为什么选择C语言

这个是有C语言的特性来决定的,C语言的特点是既有高级语言的特性也有低级语言的特性,C语言既能直接进行硬件底层的相关操作,又能实现上层的应用程序开发,并且运行高效、可移植,几乎所有的操作系统底层的实现绝大部分都是使用C语言来实现的,少数地方需要使用汇编语言,嵌入式设备的运行要求和C语言是一拍即合吧。

④ 学习嵌入式c语言要学到什么程度

弄懂C语言是最基本的,尤其是指针和结构体,嵌入式C还要求了解linux系统,编译原理,ARM汇编,内核移植,C++面向对象编程,QT编程(主要针对嵌入式设备的可视化界面开发),当然后面这些需要大体了解就可以,学好C语言才是最根本的,建议看三本书谭浩强《C程序设计》,《C和指针》,《UNIX环境高级编程》。最后一本建议好好看看,看懂50%就已经是神了

⑤ 嵌入式C语言

Linux C编程一站式学习这本书,我感觉不错,还是免费的,GPL的,感觉讲得蛮详细的,而且比较细节...

本书有以下特点:

不是孤立地讲C语言,而是和编译原理、操作系统、计算机体系结构结合起来讲。或者说,本书的内容只是以C语言为载体,真正讲的是计算机的原理和程序的原理。

强调基本概念和基本原理,在编排顺序上非常重视概念之间的依赖关系,每次引入一个新的概念,只依赖于前面章节已经讲过的概念,而绝不会依赖后面章节要讲的概念。有些地方为了叙述得完整,也会引用后面要讲的内容,比如说“有关XX我们到XX章再仔细讲解”,凡是这种引用都不是必要的依赖,可以当它不存在,只管继续往下看就行了。

尽量做到每个知识点直到要用的时候才引入。过早引入一个知识点,讲完了又不用它,读者很快就会遗忘,这是不符合认知规律的。

如果仅仅是应用,那么在 LINUX下还是在windows 编程相差不是特别大的,系统都会提供api让你调用...但windows下IDE做得相对较好些,linux 下要自己写makefile组织工程,不过现在应该也有IDE的一些工具提供应用编程的吧,不过在linux下,makefile 很重要,还是有必要了解的..

至于嵌入式,主要是可移动,是为某个专门功能开发的,记得就是计算机的简化版..

⑥ 嵌入式C语言的定义问题,谢谢!

字符型在机器里面也是以二进制保存的。所以 i = 0 不一定就是数学意义上的零。
typedef 是预定义的关键字,意思定义一个 INT8U 来代替 unsigned char, 只是为了写程序和读程序的方便,没有其他意义。

⑦ 嵌入式开发要学哪些课程

嵌入式开发的必学课程:C语言,C++,操作系统,计算机组成原理,linux编程,51单片机,arm,硬件编程语言,模拟电路&数字电路。
嵌入式培训分几个阶段的学习,从基础到实战的练习,一点一点学习和掌握这门技术。学习的课程内容包含:嵌入式高级C语言、嵌入式设备及GUI开发、嵌入式Linux高级程序设计、Linux高级网络程序设计、数据库开发、面向对象高级语言程序设计、物联网、CotexA53 Linux平台驱动开发及真实的企业实战项目。
想要学好嵌入式技术,嵌入式软件开发工程师,从事领域很宽泛,特别是工业控制、消费电子与通信设备三大领域,因为就业面很大,所以人才需求也大。现在智能硬件也比较火,这方面的发展也会大大拓展嵌入式软件开发工程师的就业机会。再者,嵌入式硬件工程师,需求没有嵌入式软件开发工程师大,但因为做硬件门槛会高些,所以这个方向如果做的比较专业,薪资绝对不会低。

⑧ 如何学习嵌入式系统

基础知识:
目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。 科目:数字电路、计算机组成原理、嵌入式微处理器结构。 汇编语言、C/C++、编译原理、离散数学。 数据结构和算法、操作系统、软件工程、网络、数据库。 方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。 主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。
学习linux: 目的:深入掌握linux系统。 方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。 主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。
学习嵌入式linux: 目的:掌握嵌入式培训(www。embtarena。com)处理器其及系统。 方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。 (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。 (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。 主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。
深入学习: A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。 B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。 C、网络与信息安全技术:如加密技术,数字证书CA等。 D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。 说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一 种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。

⑨ 嵌入式学习的路线应该怎么走

如果资金允许也还有点兴趣的话,赶紧买块开发板,跟着开发板的实验一个个做,现在还来得及,差不多到毕业时候,就有一个可以入门的基础了.如果是比较好一点的学校,可尝试找工作了,然后如果资金还允许的话.可以找好一点的嵌入式培训机构进行系统的深入的学习.如果自己认真,相信学完后效果应该不差,再去找工作,相对来说轻松点了.
当然专业知识扎实,有考研的意向,就考个好点的学校,主要还是要做项目才行.毕业后找工作会有一定的加分.
除了你所学的知识,建议你有空到图书馆看看操作系统相关的入门书籍,要明白,进程,线程,进程通信,线程同步,相关的知识.下载个虚拟机软件安个ubuntu什么的linux系统,做下实验.
要搞懂嵌入式开发的一般流程.
嵌入式学习,主要靠自学,和坚持,有很多东西要学,是条漫长的路.

⑩ 嵌入式开发中为什么选择C语言

能直接访问硬件,指在C语言中,我们可以通过指针控制内存以及寄存器。嵌入式系统是软硬结合的东西,所以我们选择学习能直接访问硬件的高级语言——C语言。

我汇编和C语言都可以直接访问硬件。但汇编的语法较为简单,所以对硬件做初始化操作时选择汇编,而对硬件做初始化时选择C语言(C语言是高级语言中最低级的,但是C语言也具有高级语法)。
很高的运行效率C语言是高级语言中最低级的语言,可以直接编译生成硬件识别的机器码文件。而其他的高级语言需要相应的语言解释器做解释后,再编译。接下来通过C语言与java语言的比较,来帮助读者理解为何C语言相比其他高级语言执行效率较高