自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(181)
  • 资源 (4)
  • 收藏
  • 关注

转载 设备树解析过程

linux设备驱动程序-设备树(1)-dtb转换成device_node - 牧野星辰 - 博客园linux设备驱动程序-设备树(2)-device_node转换成platform_device - 牧野星辰 - 博客园linux设备驱动程序-设备树(3)-设备树多级子节点的转换 - 牧野星辰 - 博客园...

2021-10-28 14:12:20 555

原创 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..

2021-10-25 00:01:45 287

转载 uboot2012(一)分析重定位

uboot2012(一)分析重定位 - zongzi10010 - 博客园引入#关于移植,搜索关键英文词语portting移植简单的介绍在readme中,手册是它的使用帮助代码仓库地址 02-uboot重定位加入自己的代码环境配置#这里使用编译工具arm-linux-gcc-4.3.2.tar,具体安装参考更换gcc工具链.md编译体验#Copymake smdk2410_config make 入口查找#我们可以从顶层Makefile开始分析,也可以

2021-10-22 11:04:57 446

转载 Linux内核空间与用户空间信息交互方法

摘要:在进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用户程序之间交换信息。Linux提供了多种方法可以用来完成这些任务。本文总结了各种常用的信息交换方法,并用简单的例子演示这些方法各自的特点及用法。其中有大家非常熟悉的方法,也有特殊条件下方可使用的手段。通过对比明确这些方法,可以加深我们对Linux内核的认识,更重要的是,可以让我们更熟练驾御linux内核级的应用开发技术。内核空间(kernel-space) VS用户空间(user-space)作为一个Linux开发者,首先.

2021-10-20 11:02:24 786

转载 内存管理——页表

Linux内核页表管理-那些鲜为人知的秘密1.开场白 环境: 处理器架构:arm64 内核源码:linux-5.11 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope 通用操作系统,通常都会开启mmu来支持虚拟内存管理,而页表管理是在虚拟内存管理中尤为重要,本文主要以回答几个页表管理中关键性问题来解析Linux内核页表管理,看一看页表管理中那些鲜为人知的秘密。2.页表的作用是什么?1)地址转换将虚拟地址转换..

2021-10-18 17:20:24 11138

转载 在shell或bash执行一个bin文件或者脚本的流程

作者:刘长元链接:https://www.zhihu.com/question/430325644/answer/1575817073来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。本回答基本上是从下面这篇文章翻译而来,但是没有完全照抄,而是加了一些相关资料和我的想法。我也不搬英文原文过来了,有兴趣的可以直接点进去看。https://0xax.gitbooks.io/linux-insides/content/SysCall/linux-syscall-4.h.

2021-10-13 16:47:43 2745

转载 内存管理——高端内存

作者:文松链接:https://www.zhihu.com/question/280526042/answer/1615449221来源:知乎一、高端内存的由来(为什么需要高端内存)在32位地址时代,最大可寻址0xFFFFFFFF,即4GB,因此虚拟地址空间有4GB,通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间,即Linux内核虚拟地址空间只有1G。32位地址空间实际的计算机体系结构有硬件的限制,这约束了页框的使用方式,其中,Linux内核必须处理x.

2021-10-13 14:42:59 1626

转载 内存管理——初始化流程

arm linux中memblock与mem_map的初始化memblock和mem_map是linux内存管理中非常重要的两个全局变量。memblock保存着所有物理内存区域,包括可用的(memory)与保留的(reserved)。mem_map是全局page数组,物理内存每个页对应一个page结构体,顺序存储在mem_map中。1 memblock初始化可用的物理内存区域由bootloader通过dts传递给kernel,节点名称是“memory”。这个节点的内容可以由用户指定,也有可能是用

2021-10-13 14:26:15 1044

转载 内存管理 kmalloc

section 0 preface用户态的heap,是由glibc实现的,内核则自力更生的,所以内核的heap差别挺大的。从最直观的角度去看,在进行内核模块编写的时候,我们可以调用的heap相关函数,是kmalloc()以及kfree(),那么我们就从kmalloc()函数出发吧。本文会涉及kmalloc、linux的伙伴系统,涉及大量的kernel源码阅读。linux/ Source Tree - Woboq Code Browser​code.woboq.org/linuxsecti

2021-10-12 19:58:17 4027 1

转载 getprop setprop初步探索

https://blog.csdn.net/heqiangflytosky/article/details/69432749Android getprop 和 setprop 可以对系统属性进行读取和设置。通过串口执行以下 getprop 打印出来的属性让你一目了然。属性出来了,但是在哪里设置的呢,这里有两个地方:一个是配置文件读取的,一个是系统动态获取的。...

2021-08-21 11:41:18 319

原创 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命令,将命令运行的结果赋值第二.

2021-08-06 10:22:34 1597

转载 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...

2021-08-06 10:00:03 2801

原创 Gerrit修改前一次提交的方法

方法一:用--amend选项(HY亲测有效,可以不用abandon了)① #修改需要修改的地方② git add .③ git commit --amend (注意是两个--)④ git push origin HEAD:refs/for/XXXXXXX这种方式可以比较方便的保持原有的Change-Id,推荐使用。...

2021-07-19 15:18:31 782

原创 Shell脚本定义变量和重新赋值

定义变量时,变量名不加美元符号($),如:variableName="value"注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:•首个字符必须为字母(a-z,A-Z)。•中间不能有空格,可以使用下划线(_)。•不能使用标点符号。•不能使用bash里的关键字(可用help命令查看保留关键字)。变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:for skill in Ada

2021-07-17 15:16:44 5224

原创 Shell脚本-tr 将大写字母变为小写

TARGET_DEVICE="Hello"LOWER_TARGET_DEVICE=$(echo $TARGET_DEVICE | tr "[:upper:]" "[:lower:]")以上命令将Hello变为hello赋值给LOWER_TARGET_DEVICE。----------------------------------------------------------------------------------------------------------------------

2021-07-16 20:32:40 683

转载 ATF(ARM Trusted firmware)完成启动流程

ATF将系统启动从最底层进行了完整的统一划分,将secure monitor的功能放到了bl31中进行,这样当系统完全启动之后,在CA或者TEE OS中触发了smc或者是其他的中断之后,首先是遍历注册到bl31中的对应的service来判定具体的handle,这样可以对系统所有的关键smc或者是中断操作做统一的管理和分配。ATF的code boot整个启动过程框图如下:  在上述启动过程中,每个Image跳转到写一个image的方式各不相同,下面将列出启动过程中每个image跳转到下一个image的过程

2021-06-19 16:18:46 9931

转载 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 .

2021-06-11 15:53:33 1591

原创 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-06-03 11:10:59 968

转载 2021-04-08

1. bootchart 简介bootchart 是一个用于 linux 启动过程性能分析的开源工具软件,在系统启动过程中自动收集 CPU 占用率、磁盘吞吐率、进程等信息,并以图形方式显示分析结果,可用作指导优化系统启动过程。bootchart 让用户可以很直观的查看系统启动的过程和各个过程耗费的时间,以便让用户能够分析启动过程,从而进行优化以提高启动时间。它由 bootchartd 服务和 bootchart-render 两部分组成,后者主要负责生成启动流程的分析结果图。bootcha

2021-04-08 20:31:00 538

原创 遇到的问题: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..

2021-04-01 10:08:20 1878

转载 [Android] 查看MTD,EMMC,MMC三种设备的分区

[Android] 查看MTD,EMMC,MMC三种设备的分区发表于20212019-10-04|分类于移动端|没有评论因为在做系统升级,AOSP的recovery下有一个flash_image工具,这个工具可以在开机状态下刷写系统分区。源码位置在/bootable/recovery/mtdutils/flash_image.c。但在实际操作中,发现flash_image会报错: error scanning partitions: No such file ...

2021-03-29 16:59:58 1721

转载 压栈, 跳转,执行,返回:从汇编看函数调用

https://www.jianshu.com/p/594357dff57e从本篇开始,我们讨论一些高级语言中的基础设施:堆栈,函数调用,变量生命周期等等话题。因为这里本身会涉及到比较多的汇编层面的基础概念。为了向大家说明汇编层的函数调用实现细节,无奈我只能罗列出很多汇编上的概念,因为本文假定读者不需要具有任何汇编知识。我讨厌长篇大论,但本篇的解释可能仍然不够明晰。在此为自己知识的浅薄表示歉意。1. 从代码的顺序执行说起每一个程序员脑子里应该都有这么一种印象:“程序是顺序执行的”。这个观点其实和

2021-03-04 20:50:38 738 1

转载 Adb使用教程,看了教程后你也是玩机达人啦

很多同学刷机的时候总是很恐惧“用adb....”的教程,因为每当提起勇气好好研究一番的时候,总是会出现这样那样的问题。恐惧源于无知,你对adb一无所知,拿起来就想用,当然是各种错误会追着你跑了今天小浅就带大家入门adb,只要耐心看到底,简单的问题再也不会出现了!那么什么是adb呢?其实我们口中所讲的adb是个泛指,这其中有两个工具——Fastboot和ADBFastboot:意思是快速启动。在安卓手机中fastboot是一种比recovery更底层的刷机模式。就是使用USB数据线连接..

2021-02-26 11:57:50 29896

原创 mac_phy_网卡_网口.docx

MAC地址中的MAC是英文名MediaAccess Control的简称,中文译成介质访问控制,人们习惯上把它称之为网卡地址、硬件地址、适配器地址,MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。MAC地址用十六进制数来表示,一个6个字节,前面三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的标识符”,后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。一个地址块可以生成2^24个不同的地址。以太网地址管理机

2021-02-19 14:30:38 966

转载 Mmap的实现原理和应用

很多文章分析了mmap的实现原理。从代码的逻辑来分析,总是觉没有把mmap后读写映射区域和普通的read/write联系起来。不得不产生疑问:1,普通的read/write和mmap后的映射区域的读写到底有什么区别。2, 为什么有时候会选择mmap而放弃普通的read/write。3,如果文章中的内容有不对是或者是不妥的地方,欢迎大家指正。围绕着这两个问题分析一下,其实在考虑这些问题的同时不免和其他的很多系统机制产生交互。虽然是讲解mmap,但是很多知识还是为了阐明问题做必要的铺垫。这.

2021-02-19 11:31:54 730

转载 通过KGDB进行双机内核调试

原理原理结构图原理过程Kgdb是双机在线调试,一端是Host端(linux),运行GDB,另一端是Target端,运行带Kgdb的linux内核。两边通过串口(KGDBoc)或网络口(KGDBoE)相连接,kgdb实现了远程调试的功能,主要部件有:stubstub可卸任是一个运行在target端的代理,它负责与远程的Host端进行沟通,接收Host端发来的指令。应用场景如上面原理图所示,常常用于嵌入式开发场景中,开发板作为target端,运行打开Kgdb的内核 ,PC机作.

2021-02-04 16:11:34 441

转载 一个 Linux 上分析死锁的简单方法

一个 Linux 上分析死锁的简单方法于 东海, 宋 波, 和 池 辰2012 年 8 月 10 日发布https://www.ibm.com/developerworks/cn/linux/l-cn-deadlock/index.html简介死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。 由

2021-02-04 15:36:28 519

转载 PCIE设备与HOST之间的地址转换

最近刚好用到了通过PCIE的与PC端相连的ARM板子,看了看代码,里面的地址转换确实把我也弄得有些晕,一边和组里的人讨论一边去问大神,终于算是把这块给弄的明白了,在博客里稍微记录一下,防止之后又忘记。PCIE是一种高速串行计算机扩展总线标准,旨在替代老版的PCI总线,现在大多数主板都配有多个PCIE插槽,外设可以通过PCIE总线与主机HOST进行IO。PCIE设备通过桥接到PCIE总线来访问HOST的资源。和其他设备一样,PCIE设备也被统一编址进了HOST,HOST可以访问PCIE外设。.

2021-02-04 14:48:00 1906

转载 Linux内核最新的连续内存分配器(CMA)——避免预留大块内存【转】

Linux内核最新的连续内存分配器(CMA)——避免预留大块内存【转】阅读目录1. 声明连续内存 2. 申请连续内存 3. 释放连续内存 4. 内核内存分配的migratetype正文在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用,但是一般的做法又必须先预留着。目前,Marek Szyprowski和Michal Nazarewicz实现了一套全新的Contiguous Memory Allo.

2021-02-02 16:53:52 403

转载 linux 下PCIE控制器设备树 学习

本系列全部内容基于Synopsys DesignWare进行学习与分析在内核3.x之后开始使用设备树,所有和硬件相关部分均放在设备树中,在进行PCIE控制器学习时,对官方文档中各个变量的使用存在很大的迷惑,根据自己了解总结如下。DesignWare官方文档中的例子如下:pcie: pcie@dffff000 { compatible = "snps,dw-pcie"; reg= <0xdffff000 0x1000>, /* Controlle...

2021-02-02 15:00:07 2695

转载 PCIe device tree range属性详解

https://elinux.org/Device_Tree_Usage#PCI_Address_Translation

2021-02-02 14:55:13 1132

转载 从cpu角度理解PCIe

概述为什么需要写这篇文章,当我阅读《深入浅出SSD》这篇书籍中PCIe章节时发现,本书籍的侧重点是放在PCIe控制器和PCIe协议上,从CPU角度理解PCIe知识偏少,本文对下面几个知识点做出一些补充。CPU访问外设寄存器与内存编址方式; CPU如何访问PCIe配置空间; CPU能够通过寄存器访问配置空间,为什么还需要映射PCIe配置空间; 如何扫描PCIe树并且为PCIe分配ID; 如何将pcie域地址映射到存储器域地址空间。通过本篇文章将对问题1、2、3做出解答。统一编址于独立编址

2021-02-02 14:46:02 1816

转载 虚拟化平台就在你身边-ARM架构虚拟化扩展, 以及SMMU对虚拟化等解决方案的重要性(白皮书 2010)

白皮书(2010)虚拟化平台就在你身边ARM®架构虚拟化扩展,以及SMMU对虚拟化等解决方案的重要性Roberto Mijat软件解决方案架构师Andy Nightingale产品经理– ARM处理器部门摘要PC和服务器市场中的虚拟化已在过去几十年中提供了可衡量的收益,高级虚拟化服务器系统现已达到60%或以上的设备利用率,对应的ROI达到769%[1]移动和嵌入式领域中的虚拟化可以类似地让硬件能够以更小的内存[2]和更少的芯片运行,降低BOM[3]...

2021-02-02 14:34:15 1392

转载 Linux设备驱动——内核定时器

Linux设备驱动——内核定时器 内核定时器使用内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于<Linux/timer.h>和kernel/timer.c文件中。被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是处于非进程的上下文中,所以调度函数必须遵守以下规则:1)没有current指针、不允许访问用户空间。因为没有进程上下文,相关代码和被中断的进程没有任何联系。2)不能执行休眠(或可...

2021-02-01 19:18:28 196

原创 解决:网络风暴引起的无法ping通

问题:单板上电加载交换芯片驱动后,PC与单板ping不通。原因:网络收发包中断挂在T2080的CPU2(核2),网络风暴导致T2080的CPU2一直忙于处理收发包中断,导致CPU2占用率到100%,无法处理ping请求。解决办法:交换芯片端口划分vlan,阻止网络风暴的发生。中断亲和性和线程亲和性很像~---------------------------------------------------------------------------------------------...

2021-01-25 09:27:33 995

转载 Linux中断 - GIC代码分析

Linux中断 - GIC代码分析 https://www.cnblogs.com/alantu2018/p/8447477.html一、前言GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1~V4(V2最多支持8个ARM core,V3/V4支持更多的ARM core,主要用于ARM64服务器系统结构)。目前在ARM官方网站只能下载到Version 2的GIC ar

2021-01-20 11:44:26 789

转载 Android-- bionic介绍

Bionic简介1、什么是Bionic?Bionic是Android平台为C/C++开发者进行原生应用程序开发所提供的符合POSIX(可移植操作系统接口)标准的C库。是Android操作系统BSD(UNIX操作系统中的一个分支)标准C库的衍生库。Bionic提供了在Android平台上开发任何类型的功能性原生代码所需的最小构造集。通俗地讲,Bionic(Bionic的头文件集)就是NDK的APIBionic C库头文件在%NDK_HOME%\platforms\android-&l.

2021-01-20 09:15:30 1888

原创 阻塞和非阻塞(串口自环测试失败原因定位)

串口自环测试失败原因定位INT32 serial_test(){ INT32 fd; INT32 i; char rbuf[1]; char wrbuf[1]; INT32 count = 0; INT32 cnt = 0; rbuf[0] = 0; int ret;//VCS_Ctrl_LedConf(SC1_LED,RED,FAST_BLINK); //SC4红灯灭// printf("serial_test::11111\n...

2021-01-18 19:28:28 1121

转载 HAL

深入浅出 - Android系统移植与平台开发(七)- 初识HAL1. HAL的module与stubHAL(Hardware AbstractLayer)硬件抽象层是Google开发的Android系统里上层应用对底层硬件操作屏蔽一个软件层次,说白了,就是上层的应用不用关心底层硬件具体如何工作的,只要向上层提供一个统一的接口即可,这种设计思想广泛的存在于当前的软件架构设计里。严格来讲,Android系统里完全可以没有HAL硬件抽象层,上层应用层可以通过API调用到底层硬件,但是A...

2021-01-14 15:33:35 288

原创 IOMMU 虚拟IO地址和物理地址相关联

RC ---------- 808 ------------- NVIDIANT UpLink Side Virtual Side服务器通过非透明桥片与NVIDIA Xavier模组相连。NVIDIA端申请IOVA地址。#if 1 int ret; int page_num=4; struct dev...

2021-01-06 17:23:00 2755 1

expect5.45.3.tar.gz

expect是在tcl基础上创建起来的,它提供了一些tcl所没有的命令,如果是源码安装的话首先需要安装tcl。

2018-09-17

OpenSSH-7.8p1

最新Openssh 源码 安装包 用于嵌入式linux开发的移植。

2018-09-17

有关TI_DSP的EMIF接口的两个问题

TI DSP的EMIF接口的地址总线问题

2014-03-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除