- 博客(10)
- 收藏
- 关注
转载 你写的代码如何跑起来的
在我们编写的代码编译完生成可执行程序之后,下一步就是使用 shell 把它加载起来并运行之。一般来说 shell 进程是通过fork+execve来加载并运行新进程的。一个简单加载 helloworld 命令的 shell 核心逻辑是如下这个过程。// shell 代码示例...if (pid==0){ // 如果是在子进程中//使用 exec 系列函数加载并运行可执行文件} else {......shell 进程先通过 fork 系统调用创建一个进程出来。
2023-11-08 10:39:51
462
1
转载 linux reboot/panic
我们更多的是关注板卡的启动过程,很少关注reboot,只有出了reboot相关的问题后,才会去了解。理解整个reboot的流程,可以有助于我们定位问题;从上面reboot和panic的流程图可以看出,都将执行内核其他模块注册的notifier函数,可以利用这一机制,通过向注册reboot和panic子系统注册notifier函数,实现在rboot和panic过程中执行特定的任务:比如reboot的时候dump外设寄存器,重启外接设备,保护现场,置内存为自刷新模式,设置是warm还是poweron重启等;
2023-10-19 15:32:06
864
转载 chronyd 时间同步详解
集群中节点之间需要时间同步,Chronyd不依赖外部的时间服务NTP,在内部搭建时间服务器。Chrony是网络时间协议(NTP)的一种实现,是一个类Unix系统上NTP客户端和服务器的替代品。Chrony客户端可以与NTP servers同步系统时间,也可以与参考时钟(例如:GPS接受设备)进行同步,还与手动输入的时间进行同步。同样Chrony也可以作为一个NTPv4(RFC 5905) server为其他计算机提供时间同步服务。
2023-10-18 10:56:11
1778
1
原创 linux __setup(str, fn)
obs_kernel_param类型的__setup_console_setup,__used __section(".init.setup") __attribute__((aligned((sizeof(long)))))均为属性。即轮询从__setup_start开始的obs_kernel_param类型的数组,并调用p->setup_func,对于__setup("console=", console_setup)即为函数console_setup。以arm64架构实现为例。
2023-05-24 18:02:16
278
1
原创 S32G3 SIUL2
S32G3的SIUL2实现参考Reference Manual的Chapter 16 System Integration Unit Lite2(SIUL2),S32G3集成了2个SIUL2模块,SIUL2_0与SIUL2_1,对应的寄存器如下:(个人理解,每个SIUL2都支持0-511个MSCR,512-1023个IMCR,S32G3集成了2个SIUL模块,每个模块可使用的端口索引号如下:)InstanceReferenceSIUL2_0SIUL_CC0x4009C000SIUL2_1。
2023-05-19 14:50:35
1480
2
原创 linux irq_work
源码路径:irq_work是linux提供的支持在中断上下文执行回调函数的机制,使能该功能需要开启CONFIG_IRQ_WORK。如何使用irq_work机制?1.定义struct irq_work类型的变量my_irq_work,以下两种方式是等效的使用DEFINE_PER_CPU可以设置flags的值,init_irq_init则flags默认为0。2. 请求在中断上下文执行//在当前cpu上queue。
2023-04-27 17:53:46
907
1
原创 linux wait queue
wait_event及其变体最终都是调用__wait_event,只是入参的差异struct__wq_entry;//初始化wait_queue_entry类型的变量for (;;/*如果state为可被中断且有挂起的signal信号,返回-ERESTARTSYS*否则把wait_queue_entry添加到wait_queue_head链表中,并把进程状态设置为state*这里只更改了进程状态,并没有执行调度。*///
2023-04-27 12:21:22
260
1
原创 uboot 分区表概念
每个分区可以挂载为独立的文件系统,即允许磁盘不同的空间用作不同的功能,如一个分区用于OS,另一个分区用于存放用户数据;BIOS/UEFI为bootrom中固化的程序,在上电后首先执行,并根据分区表加载bootloader,并由bootloader引导os的启动。在嵌入式领域,soc的bootrom程序在上电后执行,并根据分区表加载uboot,由uboot引导os启动;在PC领域,常见的2种引导程序BIOS(对应MBR格式分区表)、UEFI(对应GPT格式分区表);
2023-04-24 16:41:21
1387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人