设备树解析过程 linux设备驱动程序-设备树(1)-dtb转换成device_node - 牧野星辰 - 博客园linux设备驱动程序-设备树(2)-device_node转换成platform_device - 牧野星辰 - 博客园linux设备驱动程序-设备树(3)-设备树多级子节点的转换 - 牧野星辰 - 博客园...
1025 todos 1025 jobs todo.https://blog.csdn.net/callinghl/article/details/46470265https://blog.csdn.net/callinghl/article/details/46471655https://blog.csdn.net/callinghl/category_5584381.htmlhttp://blog.chinaunix.net/uid-20799298-id-99666.htmlhttps://blog.csdn..
uboot2012(一)分析重定位 uboot2012(一)分析重定位 - zongzi10010 - 博客园引入#关于移植,搜索关键英文词语portting移植简单的介绍在readme中,手册是它的使用帮助代码仓库地址 02-uboot重定位加入自己的代码环境配置#这里使用编译工具arm-linux-gcc-4.3.2.tar,具体安装参考更换gcc工具链.md编译体验#Copymake smdk2410_config make 入口查找#我们可以从顶层Makefile开始分析,也可以
Linux内核空间与用户空间信息交互方法 摘要:在进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用户程序之间交换信息。Linux提供了多种方法可以用来完成这些任务。本文总结了各种常用的信息交换方法,并用简单的例子演示这些方法各自的特点及用法。其中有大家非常熟悉的方法,也有特殊条件下方可使用的手段。通过对比明确这些方法,可以加深我们对Linux内核的认识,更重要的是,可以让我们更熟练驾御linux内核级的应用开发技术。内核空间(kernel-space) VS用户空间(user-space)作为一个Linux开发者,首先.
内存管理——页表 Linux内核页表管理-那些鲜为人知的秘密1.开场白 环境: 处理器架构:arm64 内核源码:linux-5.11 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope 通用操作系统,通常都会开启mmu来支持虚拟内存管理,而页表管理是在虚拟内存管理中尤为重要,本文主要以回答几个页表管理中关键性问题来解析Linux内核页表管理,看一看页表管理中那些鲜为人知的秘密。2.页表的作用是什么?1)地址转换将虚拟地址转换..
在shell或bash执行一个bin文件或者脚本的流程 作者:刘长元链接:https://www.zhihu.com/question/430325644/answer/1575817073来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。本回答基本上是从下面这篇文章翻译而来,但是没有完全照抄,而是加了一些相关资料和我的想法。我也不搬英文原文过来了,有兴趣的可以直接点进去看。https://0xax.gitbooks.io/linux-insides/content/SysCall/linux-syscall-4.h.
内存管理——高端内存 作者:文松链接:https://www.zhihu.com/question/280526042/answer/1615449221来源:知乎一、高端内存的由来(为什么需要高端内存)在32位地址时代,最大可寻址0xFFFFFFFF,即4GB,因此虚拟地址空间有4GB,通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间,即Linux内核虚拟地址空间只有1G。32位地址空间实际的计算机体系结构有硬件的限制,这约束了页框的使用方式,其中,Linux内核必须处理x.
内存管理——初始化流程 arm linux中memblock与mem_map的初始化memblock和mem_map是linux内存管理中非常重要的两个全局变量。memblock保存着所有物理内存区域,包括可用的(memory)与保留的(reserved)。mem_map是全局page数组,物理内存每个页对应一个page结构体,顺序存储在mem_map中。1 memblock初始化可用的物理内存区域由bootloader通过dts传递给kernel,节点名称是“memory”。这个节点的内容可以由用户指定,也有可能是用
内存管理 kmalloc section 0 preface用户态的heap,是由glibc实现的,内核则自力更生的,所以内核的heap差别挺大的。从最直观的角度去看,在进行内核模块编写的时候,我们可以调用的heap相关函数,是kmalloc()以及kfree(),那么我们就从kmalloc()函数出发吧。本文会涉及kmalloc、linux的伙伴系统,涉及大量的kernel源码阅读。linux/ Source Tree - Woboq Code Browsercode.woboq.org/linuxsecti
getprop setprop初步探索 https://blog.csdn.net/heqiangflytosky/article/details/69432749Android getprop 和 setprop 可以对系统属性进行读取和设置。通过串口执行以下 getprop 打印出来的属性让你一目了然。属性出来了,但是在哪里设置的呢,这里有两个地方:一个是配置文件读取的,一个是系统动态获取的。...
Makefile中创建一个以当前时间为文件夹名的文件 TIMESTAMP=$(shell date +%Y%m%d%H%M)mkdir $(OUTPUT)/Myfile_$(TIMESTAMP)其中踩得坑是在给变量TIMESTAMP赋值时,使用的是TIMESTAMP=$(date +%Y%m%d%H%M)导致TIMESTAMP一直为空。Makefile中利用shell的方式来给变量赋值的两种方法一、 AA = $(shell pwd)二、AA = `pwd`第一种方法赋值是先执行shell命令,将命令运行的结果赋值第二.
zip 后压缩包带路径 情形:使用zip压缩文件时,发现如果不是在文件所在目录中压缩,比如zip -r /home/Me/out/file.zip /home/Me/out/filefile.zip中会带有路径/home/Me/out/file,man zip 发现-j选线-j--junk-paths Store just the name of a saved file (junk the path), and do not store direct...
Gerrit修改前一次提交的方法 方法一:用--amend选项(HY亲测有效,可以不用abandon了)① #修改需要修改的地方② git add .③ git commit --amend (注意是两个--)④ git push origin HEAD:refs/for/XXXXXXX这种方式可以比较方便的保持原有的Change-Id,推荐使用。...
Shell脚本定义变量和重新赋值 定义变量时,变量名不加美元符号($),如:variableName="value"注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:•首个字符必须为字母(a-z,A-Z)。•中间不能有空格,可以使用下划线(_)。•不能使用标点符号。•不能使用bash里的关键字(可用help命令查看保留关键字)。变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:for skill in Ada
Shell脚本-tr 将大写字母变为小写 TARGET_DEVICE="Hello"LOWER_TARGET_DEVICE=$(echo $TARGET_DEVICE | tr "[:upper:]" "[:lower:]")以上命令将Hello变为hello赋值给LOWER_TARGET_DEVICE。----------------------------------------------------------------------------------------------------------------------
ATF(ARM Trusted firmware)完成启动流程 ATF将系统启动从最底层进行了完整的统一划分,将secure monitor的功能放到了bl31中进行,这样当系统完全启动之后,在CA或者TEE OS中触发了smc或者是其他的中断之后,首先是遍历注册到bl31中的对应的service来判定具体的handle,这样可以对系统所有的关键smc或者是中断操作做统一的管理和分配。ATF的code boot整个启动过程框图如下: 在上述启动过程中,每个Image跳转到写一个image的方式各不相同,下面将列出启动过程中每个image跳转到下一个image的过程
Shell脚本 批量修改目录下若干文件名 #! /bin/bash#ll > name.txtStr="bootanimation_"function read_dir(){for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令do if [ -d $1"/"$file ] #注意此处之间一定要加上空格,否则会报错 then read_dir $1"/"$file else echo $file #在此处处理文件即可# if [[ $file =~ $Str ]]if [[ $file .
ARM上电启动 为了让将来的 Nor Flash 兼容性更好,引进了 CFI (Common Flash Interface)接口,将芯片有关的信息都写入芯片内部,通过 CFI 命令就可以获取这些信息。Nor Flash上电后处于数据读取状态(Reading Array Data)。此状态可以进行正常的读。这和读取SDRAM/SRAM/ROM一样。在完成信息获取后一般就要擦除数据。 Nor Flash支持扇区擦(Sector Erase)除和整片擦除(Chip Erase)。DQ7:Data# Polling.
2021-04-08 1. bootchart 简介bootchart 是一个用于 linux 启动过程性能分析的开源工具软件,在系统启动过程中自动收集 CPU 占用率、磁盘吞吐率、进程等信息,并以图形方式显示分析结果,可用作指导优化系统启动过程。bootchart 让用户可以很直观的查看系统启动的过程和各个过程耗费的时间,以便让用户能够分析启动过程,从而进行优化以提高启动时间。它由 bootchartd 服务和 bootchart-render 两部分组成,后者主要负责生成启动流程的分析结果图。bootcha
遇到的问题:uboot下,关闭串口前需要printf打印一个“UART BUS OFF!!!”提示信息,但是打印不出来 https://blog.csdn.net/wenjin359/article/details/84100150https://blog.csdn.net/ce123_zhouwei/article/details/7364294详解U-Boot中printf函数的实现一、printf函数调用关系1.1fputc和srial_putc的关系/** Output a single byte to the serial port.*/void serial_putc (const c..