苏文昊的嵌入式开发学习笔记总目录
- 开发环境与开发工具
- Ubuntu系统相关
- Windows系统相关
- 串口通讯相关
- 网卡通信相关
- 内核编译、设备树编译、内核模块编译相关
- 代码阅读书写工具(IDE)
- 代码同步工具
- Linux系统相关
- gcc交叉编译相关
- Makefile文件的书写
- 嵌入式驱动开发相关
- 嵌入式应用开发相关
- Git代码管理工具的使用
- 开发板硬件和偏底层逻辑相关
- 芯片相关
- C/C++编程语言相关
开发环境与开发工具
Ubuntu系统相关
Ubuntu操作系统在Vmware中的安装、常用操作、最基础的知识
Ubuntu系统中,用Text Editor打开编辑文件 但是修改后无法保存,怎么办?
解决Ubuntu在VMware关机时,老是一个光标在那里闪动几分钟,才能关机的问题
怎么样能使Ubuntu的文件浏览器显示当前目录的路径,而不是只显示一个文件名?
首次打开发板厂家提供的Ubuntu-18.04镜像后,该做哪些事?
Vmware的网络适配器的NAT模式和桥接模式有何区别?如何给Uubunt系统添加桥接网卡?
在 Ubuntu 中 make 是否是系统自带的?怎么样查看Linux系统中是否有make?
如何设置Ubuntu18.04系统时间的时区?
Windows系统相关
如何打开Windows10的设备管理器
串口通讯相关
SecureCRT_8.0安装过程记录
SecureCRT_8.0的使用经验与Tips汇总
IMX6ULL开发板如何与PC进行串口进行终端通讯
网卡通信相关
设置IMX6ULL开发板的网卡IP的两种方法(临时生效和永久有效两种方法)
IMX6ULL开发板、PC机上的USB网卡、VMware中的Ubuntu的桥接网卡三者互Ping设置及设置
IMX6ULL开发板挂载 Ubuntu 的 NFS 目录,并以交叉编译得到的hello程序进行测试
内核编译、设备树编译、内核模块编译相关
Linux编译Kernel时的文件zImage、文件dtb(dtbs)、核心模块分别是什么东西?
编译生成IMX6ULL开发板的Linux内核(Kernel)zImage文件、设备树文件(dtb)、内核模块(ko)文件,编译好后更换掉开发板上之前的
IMUX6ULL开发板LED驱动模块的编译安装过程
代码阅读书写工具(IDE)
Source Insight 4.0的安装
Source Insight的使用经验、Tips汇总
Visual Studio Code(VS code-VScode)安装及使用经验、技巧汇总
代码同步工具
嵌入式开发之使用 FileZilla 在 Windows 和 Ubuntu 之间传文件
Linux系统相关
Linux常用命令(删除、关机、解压、复制(详解cp命令)、移动…
Linux中用pwd命令可以显示当前路径,请为pwd来自于什么的缩写?
Linux系统中的Kernel内核是什么东西?
Linux编译Kernel时的文件zImage、文件dtb(dtbs)、核心模块分别是什么东西?
怎么样理解“在Linux嵌入式开发中,一切皆是文件。”这句话?
Linux系统的etc目录介绍
Linux系统的阻塞方式和非阻塞方式是什么意思?
在Linux嵌入式编程中,与内存相关的堆(Heap)和栈(Stack)有什么区别?Linux中堆、栈、数据段(存储全局变量)、代码段的内存布局是怎么样的?各种变量的分配区域是怎么样的?
Linux下读取Windows下保存的文件,报错信息中出现“^M“时如何解决?【由于Windows和Linux的换行方式不同造成的-提供两种转换方式】
Linux的源码在Windows下解压时提示文件名字相同(重名)的原因及解决办法
Linux打开一个文件并读取内容的详细流程【inode结构体、fd文件描述符、struct file
结构体、一个打开普通文件和一个打开设备文件的详细流程分析】
Linux的内核空间和用户空间是怎么回事儿?驱动程序位于内核空间中,与用户空间的数据传递通过copy_to_user和copy_from_user进行;Ring 0和Ring 3是啥意思?
Linux的proc目录与什么有关?【以及它里面的文件各自记录着什么信息】
Linux系统的ioremap()函数详解【包含对页对齐地址的详解】
Linux的内核空间中的日志打印函数printk的详解;如果设置printk
函数的默认日志级别和是否输出到终端控制台
与Linux的模块(module-MODULE)相关的知识汇总
为什么自己写的两个Linux模块,前一个加载时提示“loading out-of-tree module taints kernel”,后一个加载时就没有提示了?
gcc交叉编译相关
Ubuntu中配置交叉编译工具的三条命令的详细研究
Ubuntu中安装配置交叉编译工具 arm-buildroot-linux-gnueabihf-gcc 并进行测试
Linux系统中的gcc是什么东西?构建工具make的Makefile文件又是什么作用?
gcc命令中的-o参数并不是生成目标文件的意思,而是指定可执行文件的名称;如何生成目标文件;Linux中可执行文件没有exe的后缀
目标文件或可执行文件中的符号信息和调试信息是怎么回事儿?
gcc的链接器的相关知识要点(库的书写顺序、搜索库的路径、库的全名…)
Linux系统下交叉编译安装第三库时常用的“./configure“命令介绍(包含对prefix配置参数和make install
时指定的路径的区别)
如何查看Linux的二进制可执行文件是该运行于哪个架构的平台上?【用file命令】
如何检查交叉编译器gcc工具链里是否有某个库(以zlib库和libpng库为例)
在交叉编译中,常见的ELF(elf)到底是什么意思?
如何查看gcc编译器编译时的include头文件搜索路径、各默认路径通常用于存放何种头文件、gcc编译器搜索头文件时不会去搜索默认路径中的子目录怎么办【头文件的目录嵌套】?
Makefile文件的书写
读懂和编写Makefile需掌握的关键基础知识(常用符号、先解析再执行、make命令的第一个动作、规则的概念、目标及伪目标的相关概念、文件更新机制、几个重要的自动化变量等知识)
Makefile文件编写的学习记录(以IMX6ULL开发板的Makefile文件和Makefile.build文件来进行学习)
关于顶层Makefile文件中的语句obj-y += display/
和子目录Makefile文件中的语句obj-y += disp_manager.o
的理解
有些Makefile文件以“.build”的后缀结尾是怎么回事儿?【Makefile.build文件是怎么回事儿?】
Makefile中遇到的touch命令是怎么回事儿?
Makefile中使用include语句时要特别注意避免陷入无限循环的死循环中
交叉编译Linux驱动程序和测试程序的Makefile文件解读
嵌入式驱动开发相关
Linux嵌入式开发中的基本文件操作函数open函数的介绍
Linux中的 read() 函数的介绍及使用实例
Linux嵌入式开发中的调试方法、技巧、经验汇总
为什么Linux驱动程序模块的C文件末尾要加上MODULE_LICENSE(“GPL“);
嵌入式驱动开发编程中涉及到的重要结构体——文件操作结构体:file_operations的完整定义
以一个实际例子来学习Linux驱动程序开发之“设备类”的相关知识【利用设备类实现对同一设备类下的多个LED灯实现点亮或关闭】
Linux系统中的文件描述符(文件句柄)的作用是什么?
Linux打开一个文件并读取内容的详细流程【inode结构体、fd文件描述符、struct file
结构体、一个打开普通文件和一个打开设备文件的详细流程分析】
Linux驱动程序中文件操作结构体file_operations中定义的底层操作函数常用到的参数struct inode *node、struct file *file是怎么回事儿?
Linux驱动程序中文件操作结构体file_operations中定义的操作函数open、read、write 和 release 等函数都有固定的参数形式和返回值类型,它们何时被调用,各参数意义是?
Linux的内核空间和用户空间是怎么回事儿?驱动程序位于内核空间中,与用户空间的数据传递通过copy_to_user和copy_from_user进行;Ring 0和Ring 3是啥意思?
交叉编译Linux驱动程序和测试程序的Makefile文件解读
Linux驱动学习之第一个驱动程序(HelloWorld-最简单的字符型设备驱动程序-不设计具体的硬件的驱动程序)
Linux系统的ioremap()函数详解【包含对页对齐地址的详解】
Linux驱动学习之第二个驱动程序(LED点亮关闭驱动程序-分层设计思想,使其能适应不同的板子-驱动程序模块为多个源文件怎么写Makefile)
与Linux的模块(module-MODULE)相关的知识汇总
概要性了解Linux的总线设备驱动
Platform总线设备驱动是如何把设备资源描述结构体(platform_device)与驱动结构体(platform_driver)匹配起来的【函数platform_match()
详解】
Platform总线设备驱动中非常重要的结构体platform_device
的详细介绍【以及如何查看系统中存在的platform_device
结构体的记录文件】
Platform总线设备驱动中非常重要的结构体platform_driver
的详细介绍【以及如何查看系统中存在的platform_driver
结构体的记录文件】
利用Linux的Platform总线设备驱动实现对多个LED的驱动【只是假想对LED进行驱动,并没有实际的硬件操作】【Makefile如何书写能生成多个模块文件】【总线设备驱动的好处】
与Linux的设备树文件(dts)的基础知识【根节点、子节点、标签名、节点名称、&
开头的引用结构、嵌套节点的引用、节点格式的灵活性、禁止节点、命令行基本操作、实际例子等】
修改之前的代码使得利用设备树文件和Platform总线设备驱动实现对多个LED的驱动【只是假想对LED进行驱动,并没有实际的硬件操作】
为什么自己写的两个Linux模块,前一个加载时提示“loading out-of-tree module taints kernel”,后一个加载时就没有提示了?
Linux驱动学习之第三个驱动程序(两个按键的驱动程序-读取按键值)
BSP一般是由处理器芯片制造商提供还是开发板商提供?BSP是如何整合(编译)进内核中的?
利用设备树、Platform驱动总线、Linux的GPIO子系统和开发板的BSP(板级支持包)来实现LED的驱动程序【IMX6ULL设备树语句生成工具Pins_Tool的使用】
嵌入式应用开发相关
在Linux的嵌入式开发中,如何确定要操作的帧缓冲设备是第几个实例?即是fb0还是fb1还是fb2…
嵌入式Linux开发中的内存映射函数mmap详解?什么叫内存映射?什么叫对设备的显式和隐式读写操作?什么叫程序的虚拟内存?
IMX6ULL开发板基础实验:Framebuffer驱动程序的简单应用实例代码详细分析
嵌入式应用实例→电子产品量产工具→显示系统的代码阅读和上机测试记录
嵌入式应用实例→电子产品量产工具→触摸屏输入系统的代码阅读和上机测试记录
tslib(触摸屏输入设备的轻量级库)的学习、编译及测试记录
Linux嵌入式系统网络套接字编程中的重要结构体sockaddr_in的介绍
Linux嵌入式系统利用套接字编程(Socket Programming)实现网络通信的基础知识并附对一个简单实例的分析
为什么在网络套接字编程中对于recvfrom()收到的数据的缓存数组要预留一个位置并把这个位置置为字符‘\0‘?
嵌入式应用实例→电子产品量产工具→网络输入系统的代码分析和上机测试记录
Linux嵌入式编程中与线程有关的知识(线程的概念、线程的创建、互斥锁、线程挂起、主线程、如何看查线程的ID等知识点)
Linux嵌入式开发中的调试方法、技巧、经验汇总
FreeType矢量字符库的介绍、交叉编译以及安装
嵌入式应用实例→电子产品量产工具→UI界面的绘制和测试
解决嵌入式应用实例→电子产品量产工具→业务系统代码中“led按钮”放手后就恢复为红色的bug的调试记录
嵌入式应用实例→电子产品量产工具→业务系统的代码分析和测试(重点:配置文件的解析、UI界面的生成、输入事件的处理)
嵌入式应用实例→电子产品量产工具→对按钮中文字的改进和对函数名进行优化
嵌入式应用实例→电子产品量产工具→业务系统能支持配置文件中的command项(能运行command项中的脚本文件)
Git代码管理工具的使用
在Windows系统上使用Git将仓库代码克隆拉取到本地、拉取到本地后如果仓库代码有更新,那么如何更新、更新机制又是怎样的?
如何在Ubuntu中利用repo和git地址下载获取imx6ull的BSP
开发板硬件和偏底层逻辑相关
IMX6ULL开发板拿到货后如何测试?
恩智浦半导体(NXP)公司的介绍,它与飞思卡尔有什么联系?
恩智浦半导体(NXP)的 i.MX_6ULL嵌入式处理器介绍
IMX6ULL开发板各硬件资源说明示意图
嵌入式系统的EMMC启动方式是怎么回事儿?
芯片相关
IMX6ULL的IOMUXC寄存器和SNVS复用寄存器似乎都是对引脚指定复用功能的,那二者有何区别?
C/C++编程语言相关
C/C++函数参数传递时值传递、指针传递、引用传递的区别是什么?
关于C/C++中typedef为一个类型(包括结构体类型)同时定义多个别名、定义指针类型别名的语法
C/C++包含头文件的两种方式:尖括号方式 (<>)和双引号方式 (““)的区别
C/C++的关键词static加在函数定义前、全局变量前和函数内的变量前有什么作用?(分别是限制函数和全局变量的作用域在当前文件内和函数调用的整个期间内保留其值而不是每次初始化其值)
C语言中,const 关键字的本质作用是什么?const char *point1、char *const point2、const char *const point3等的区别是什么?
C语言结构体的初始化时并不会调用其成员函数
C语言中怎样将NULL定义为空指针?空指针的具体值其实为0哈,即地址值为0的指针为空指针。
在C语言中,访问结构体的成员时,什么时候用.
【符号点】,什么时候用符号->
?
C语言中A文件中的代码调用B文件中的某个函数,假如B文件中这个函数需要某个头文件中定义的某些东西,那么A文件中要不要包含这个头文件需要视具体情况而定。
C语言中,假如我一个C文件包含了两个头文件,而两个头文件中都有对同一个宏或结构体的定义,编译时如何处理?
C语言初始化一个结构体的时候,并不是是否每个成员都需要初始化,那没有初始化的量值为多少呢?
C语言中,数组的指针的递增运算会指向数组的下一个元素
字符串末尾符‘\0‘和数字0的ASCII编码是不一样的
C语言的strncpy()函数在什么情况下会添加字符串末尾符‘\0‘,又什么情况下不会添加?
在一个C工程文件中,如果一个函数要引用另一个文件中的函数,并不是用extern进行声明,而是在包含的头文件中进行声明
详解C语言中的关键词:extern以及它需要注意的事项
在C语言中,字符指针“char *name”和字符数组“char name[]“各自适用哪些场景?
Linux编程中C函数定义的第一行中出现的关键字“__init”是什么意思?
C语言带参数的宏定义的相关知识汇总(最常用的形式、带标记分隔符##的形式…)
C语言变量修饰符volatile
的含义和需要注意的地方