- 博客(15)
- 资源 (51)
- 收藏
- 关注
原创 arm64_device_init
这个函数将设备树上的资源填充到平台设备里面,同时创建平台设备,smab 总线。 of_platform_populate:for_each_child_of_node(root, child) { rc = of_platform_bus_create(child, matches, lookup, parent, true); if (rc)
2017-11-21 23:04:10 504
原创 amba 设备,总线
基础介绍 ARM官网的介绍:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0224b/index.html 高级微控制器总线结构Advanced Microcontroller Bus Architecture(AMBA)定义了高性能嵌入式微控制器的通信标准。可以将RISC处理器集成在其他IP芯核和外设中,它是有效连
2017-11-20 22:48:19 863
原创 pl011_init
static int __init pl011_init(void){ int ret; printk(KERN_INFO "Serial: AMBA PL011 UART driver\n"); ret = uart_register_driver(&amba_reg); if (ret == 0) { ret = amba_driver_regis
2017-11-20 22:12:44 1352
转载 early_irq_init
设置irq_default_affinity 值,可以在proc 下看到。 动态分配中断描述符实例,并将其加到radix 树中去。 树的根:irq_desc_tree在用数组来分配中断描述符的,中断描述符的数组为: struct irq_desc irq_desc[NR_IRQS] __cacheline_aligned_in_smp = { [0 … NR_IRQS-1] = {
2017-11-16 23:33:59 885
转载 Linux时间子系统的软件架构(一)
一.软件架构 但是随着技术发展,出现了下面两种新的需求: (1)嵌入式设备需要较好的电源管理策略。传统的linux会有一个周期性的时钟,即便是系统无事可做的时候也要醒来,这样导致系统不断的从低功耗(idle)状态进入高功耗的状态。这样的设计不符合电源管理的需求。 (2)多媒体的应用程序需要非常精确的timer,例如为了避免视频的跳帧、音频回放中的跳动,这些需要系统提供足够精度的timer 和
2017-11-15 21:24:19 1356
转载 linux clk驱动框架
clk common framework(ccf)子系统,用来完成对clock的统一管理. 如今,可运行Linux的主流处理器平台,都有非常复杂的clock tree,我们随便拿一个处理器的spec,查看clock相关的章节,一定会有一个非常庞大和复杂的树状图,这个图由clock相关的器件,以及这些器件输出的clock组成。下图是一个示例: clock相关的器件包括:用于产生clock的Os
2017-11-14 23:12:56 5293
转载 内核proc文件系统简介
/proc文件系统是一个特殊的由内核创建的文件系统,她仅存在于内存之中而不在外存(硬盘、flash)上。内核用她来向用户空间进程输出消息,可以说是内核向用户空间打开的一扇窗户。 最初开发/proc文件系统是为提供一种内核及其模块向进程 (process) 发送信息的机制 (这就是proc名字的由来)。这个虚拟文件系统让你可以和内核内部数据结构进行交互,获取对于进程的有用信息,并可在运行
2017-11-12 17:10:22 1931
原创 proc_root_init
1.self_inum:是一个唯一的proc inode number. 虽然它是从proc 文件系统中分配的inode number, 但仅用在nsfs中, 它被用做nsfs的inode number, 只需要保证这个number在nsfs中唯一就可以了. 2.__xlate_proc_name:This function parses a name such as “tty/driver/se
2017-11-12 16:56:03 1132
原创 vfs_caches_init
调用层次 start_kernel() |____vfs_caches_init() |____dcache_init() |____inode_init() |____files_init()
2017-11-12 12:22:35 584
转载 Linux内核中namespace之PID namespace
PID框架的设计 一个框架的设计会考虑很多因素,相信分析过Linux内核的读者来说会发现,内核的大量数据结构被哈希表和链表链接起来,最最主要的目的就是在于查找。可想而知一个好的框架,应该要考虑到检索速度,还有考虑功能的划分。那么在PID框架中,需要考虑以下几个因素.如何通过task_struct快速找到对应的pid如何通过pid快速找到对应的task_struct如何快速的分配一个唯一的pid这些
2017-11-12 11:42:07 1250
原创 初始化中的kmem_cache 实例
1.radix_tree_node_cachep:radix_tree_init() 2.obj_cache:debug_objects_mem_init()不一定打开 3.object_cache,scan_area_cache:kmemleak_init()不一定打开 4.policy_cache,sn_cache:numa_policy_init()不一定打开 5.init_pid_n
2017-11-12 10:19:17 702
转载 CONFIG_BLK_DEV_INITRD
initramfs概述 initramfs与initrd类似,也是初始化好了且存在于ram中的,可以压缩也可以不压缩。但是目前initramfs只支持cpio包格式,它会被populate_rootfs->unpack_to_rootfs(&__initramfs_start, &__initramfs_end - &__initramfs_start, 0)函数(解压缩、)解析、安装。initr
2017-11-08 22:39:34 4557
原创 lockdep_info
打印锁依赖的信息 可以参考:Linux 死锁检测模块 Lockdep 简介 http://kernel.meizu.com/linux-dead-lock-detect-lockdep.html 了解lockdep locking_selftest:死锁检测
2017-11-08 22:37:12 469
原创 time_init
主要是调用clocksource_of_init 函数来实现定时器初始化 这个函数在clksrc-of.c中,通过在__clksrc_of_table 中匹配of_device_id和device_node。 最终执行of_device_id 中的data指向的函数,实现timer 的初始化 执行的查找函数 of_find_matching_node_and_match—–>__of_mat
2017-11-03 22:18:27 1419
原创 softirq_init
硬件中断需要做尽可能少的事情,多时间要求不严的事情,交给中断下半部分去做。有三种不同形式的下半部实现机制:软中断、tasklet、工作队列。 软中断 内核定义了下面的软中断类型,用户尽量不要自己去创建软中断类型 enum { HI_SOFTIRQ=0, TIMER_SOFTIRQ, NET_TX_SOFTIRQ, NET_RX_SOFTIRQ,
2017-11-03 21:35:24 438
rtsp h265 hisi
2022-06-28
链接脚本解析
2017-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人