-
2023-08-01 15:40:40
- RISC-V Linux汇编启动过程分析
- RISC-V Linux的汇编启动部分比较简单,不算复杂。有两个部分比较核心:页表创建和重定向。页表创建是用C语言写的,今天先分析汇编部分,先带大家分析整体汇编启动流程,然后分析重定向。
-
1587
-
2023-08-01 15:39:36
- RISC-V Linux启动之页表创建分析
- RISC-V Linux启动时的页表创建相对来说还是比较容易理解的,都是C语言创建的,代码也比较少。主要就是setup_vm()和setup_vm_final()两个页表创建函数。理解了sv39的一些地址格式后,再去分析源码就比较容易。
-
1667
-
2023-08-01 15:37:08
-
2023-08-01 15:36:13
-
2023-08-01 15:30:06
- 编译Linux内核一定要知道的几个小Tips
- 编译Linux,通常只需要运行make menuconfig配置要编译的模块,然后运行make。Linux默认是做本地编译,也就是编译位本机使用的内核。在嵌入式开发中,经常需要交叉编译,要做交叉编译的话,需要在make命令后加上宏定义,如交叉编译为arm目标。
-
1194
-
2023-08-01 15:28:30
- Linux驱动 | 在驱动中创建sysfs接口
- 在一些linux开发板中,经常可以看到通过echo的方式来直接控制硬件或者修改驱动,实际上,这是因为在驱动中提供了sysfs接口给用户使用,使得用户可以通过cat或者echo命令来查看和修改驱动中某些变量的值。
-
1123
-
2023-08-01 15:26:10
-
2023-07-31 17:39:45
- Linux驱动 | debugfs接口创建
- 上篇介绍了procfs接口的创建,今天再介绍一种debugfs接口的创建。在/sys/kernel/debug/目录下创建一个ion/test文件,通过cat、echo的方式进行读写操作
-
1532
-
2023-07-31 17:06:30
- Linux内核中常用的数据结构和算法
- Linux内核代码大量使用了链表这种数据结构。链表是在解决数组不能动态扩展这个缺陷而产生的一种数据结构。链表所包含的元素可以动态创建并插入和删除。链表的每个元素都是离散存放的,因此不需要占用连续的内存。链表通常由若干节点组成,每个节点的结构都是一样的,由有效数据区和指针区两部分组成。
-
1088
-
2023-07-31 17:04:55
- 不敲一行代码,实现Linux下的LED驱动!
- 如果要实现一个设备的驱动,一行驱动代码都不用写,这听起来是不是天方夜谭呢?但这并不是不可实现的,因为全世界的内核开发者都非常热心,只要是能写的驱动,他们基本都已经写了。今天,我们就站在巨人的肩膀上,利用内核开发者已经写好的驱动来实现我们想要的功能,本篇讨论的是LED驱动。
-
1665