1. 多重包含
多重包含会让编译器做重复的计算,但是不会有实际的编译错误。
2. Cortex
Cortex(简单讲,就是ARM公司一个列的处理器。类比酷睿、奔腾、赛扬)属于ARMv7架构,这是到2010年为止ARM公司最新的指令集架构。
ARMv7系列架构定义了三大系列:
- “A系列”。面向尖端的基于虚拟内存的操作系统和用户应用。例如,麒麟9000-八核芯片组有有1个3130 MHz的Cortex-A77内核,3个2540 MHz的Cortex-A77内核和2050 MHz的4核Cortex-A55组成。
- “R系列”。针对RTOS。
- “M系列”。微控制器。
3. git clone --recursive “resporitory url”
4. while(1)和for(;;)的区别?
两者都是实现死循环的方式,但是大部分情况使用for(;;),这是因为从汇编的角度来看,前者的代码更长,执行的时间要长一些。
- 常用的配置文件格式
- ini文件: 这个在windows下用的比较多,只支持一层参数,太复杂的项目就不适用了。
- xml文件:上古时代就开始用了,每个标签可以自定认,但是格式很复杂,容易搞混。
- json文件:现在前后端交互的行业标准,搞互联网的没有人不认识,但有个头痛的地方就是不能注释(可以写一个不用的字段把注释内容写进去,但不建议)。
- yaml文件:比较新的一种配置文件格式,通俗易懂。但也有个头痛的地方,就是对齐和空格要注意雨露均沾,这个有点像Python的语法(Python开发者要随身带一把游标卡尺)。
6. .NET Framework
.NET Framework是用于Windows的新托管代码编程模型。
其实顾名思义FrameWork,就已经说明可他最最核心的含义,就是一套框架,是微软公司提供的一套支持C++,C,C#等等多种语音的开发框架。有点类似于JDK之类的。
综上所述,.Net FrameWork就是微软提供的一整套支持C系列各种语言的API和各种丰富的资源框架。可以帮助开发者快速便捷轻松的开发出复杂度较高的高级程序和网页
7. .gitkeep
在使用Git的时候如果文件夹是空的则不会被git add,因此有时为了git add成功空文件夹,我们可以在文件夹下放一个.gitkeeper文件。
8. 状态机VS自动机
FSM(finite state machine)
FAM(finite automata machine)
DFA(determinate finite automata)
NFA(Non-determinate finite automata)
自动机:自动机是有限状态机(FSM)的数学模型
状态机:我们现在所说的状态机一般是有限状态机(FSM)的简称
有限自动机:有限自动机是计算机科学的重要基石,在软件开发领域内通常被称作为有限状态机,是一种应用非常广泛的设计模式。
有限状态机:
9. 头文件(.h)和源文件(.c)区别
头文件和源文件本质上没有任何区别。一般.h的文件是头文件,内含函数声明、宏定义、结构体定义等内容;后缀为.c的文件是源文件,内含函数实现,变量定义等内容。
10. int printf(const char* fmt, …) 可变参数函数
printf是最典型的可变参数函数,它的函数原型int printf(const char* fmt, …)后面的省略好就是可变参数,所以使用printf的时候可以写不定数目的参数。
11. GDB(GUN symbolic debugger)
windows下人们习惯使用一些集成好的IDE,如VS、VC、Dev-C++等,它们内部已经嵌套了相应的调试器了。
Linux下常用的程序调试器。
12. SOC、MCU、MPU、DSP、FPGA、ASIC、CPU
- CPU(Central Processing Unit ),是一台计算机的运算核心和控制核心。CPU由运算器、控制器、寄存器及实现它们之间联系的数据、控制、状态总线构成 。
- MPU(Micro Processor Unit),叫微处理器,通常代表一个功能强大的CPU,但不是为任何已有的特定计算目的而设计的芯片。这种芯片往往是为个人计算机和高端工作站的核心CPU。微机中的中央处理器(CPU)称为微处理器(MPU),是构成微机的核心部件,也可以说是微机的心脏。
- MCU(Micro Control Unit),叫微控制器。是指随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时器和多种I/O借口集成在一片芯片上,形成芯片级的芯片,比如51、AVR、Cortex-M这些芯片,内部除了RAM、ROM,可以直接加简单的外围器件(电阻、电容)就可以运行代码了。而如x86、ARM这些MPU就不能直接放代码了,它们只不过是增强版的CPU,所以得添加RAM、ROM。
- SOC(System On Chip),指的是片上系统,MCU只是芯片级的芯片,而SOC是系统级的芯片,它既有MCU那样的内置RAM、ROM同时又像MPU那样强大,不单单是放简单的代码,可以放系统级的代码,也就是说可以运行操作系统。
- DSP(Digital Signal Processor),数字信号处理器,用来高速处理数字信号的专用芯片。
注:
- MCU不同于MPU。MPU可以看成是一个增强版的CPU,而MCU则是CPU+RAM+ROM+一些简单的外围器件。MCU就是单片机了,只要组成最小系统就可以跑代码了,而MPU则不能。
13. ISP、JTAG、SWD、SWIM
-
JTAG方式。
JTAG是一种标准的测试协议,可以实现编程的在线调试,利用单步追踪可以方便的查找代码的BUG,大多数的单片机都支持这种接口。
-
SWD接口烧录方式。
SWD是一种串行调试接口,与JTAG相比,SWD只需要两根线。
-
ISP烧写方式。
使用单片机的UART实现烧录。
-
SWIM单总线下载方式。
这种方式是针对STM8系列的单片机的,这种方式只需要一根线即可实现程序的下载。
注:
大多数单片机的JTAG和SWD接口是复用的。
方式。**
这种方式是针对STM8系列的单片机的,这种方式只需要一根线即可实现程序的下载。
注:
大多数单片机的JTAG和SWD接口是复用的。