1,什么是内存对齐?为什么要内存对齐?//内存池(4字节对齐)
__align(4) u8 mem1base[MEM1_MAX_SIZE]; //内部SRAM内存池
__align(4) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000)));
2,内存分为哪五个区?总的来说内存分为ROM,RAM这两类,指令在cpu中怎么被执行的?
3,我们的C语言代码通过MDK编译器是怎么变成HEX可执行文件的?编译过程是哪几步?
4,MDK编译器生成的map文件有哪些信息?
5,为什么说中断是CPU的硬件资源?
6,堆栈,队列如何操作?它们有什么优势?
上面这些问题都与C语言有关,作为一种接近底层的高级语言学好它对嵌入式开发的帮助非常大,几乎所有的底层开发都是应用C语言。什么是编程,我的理解是:以事物的逻辑关系与存储关系为导向的数据结构设计与存储问题;说白了就是如何设计数据结构,如何操作这些数据结构的问题。内存是个线性结构,如何高效操作这些线性结构,都与C语言有关。
比如,计算机的各种操作系统不光算法精妙同时都大量运用了C语言链表,指针,函数回调方面的知识;比如,emwin,GUI图形界面程序就大量的函数指针与函数回调;比如,嵌入式FAT32文件系统的文件操作函数几乎与C语言文件部分函数操作原理相同,也就是说学好了C语言文件部分内容,再来学习FAT32文件系统就so easy了!
玩了几年单片机,越玩越糊涂。虽然能自己设计一些项目,实现一些功能,但是终究还是感觉有很多很多问题“知其然而不知其所以然”。相信绝大多数的学习者都有这种感受,否则绝不是一个真正的技术人;相信只有一定程度深入学习的人才会有这种感觉。
我更愿意花大量的时间来加强这些基本功的学习,虽然这些东西貌似枯燥,但是真正深入学习了C语言之后才能感受C语言的魅力C语言的美。基本功扎实了,很多困扰的问题也就迎刃而解了。
有感而发,随便尿几句,装装逼。
---------GKXW--------
|