- 博客(140)
- 资源 (30)
- 收藏
- 关注
原创 GPU概述
函数:static int kbase_platform_device_probe(struct platform_device *pdev)该库介于opengl es底层函数和驱动之间,以库的形式出现。一大堆的初始化,最后注册MISC设备/dev/mali0。文件:Mali_kbase_core_linux.c。
2023-05-15 21:05:03 898
原创 linux下inotify机制文件监控代码示例
#include <sys/inotify.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/select.h>#define EVENT_SIZE (sizeof(struct inotify_event))#define BUF_LEN (1024*(EVENT_SIZE+16))void inotify_fun(struct in
2022-05-20 11:05:34 421
原创 内存分配之CMA
一.CMA相关的宏RESERVEDMEM_OF_DECLARE(cma, "shared-dma-pool", rmem_cma_setup);#define RESERVEDMEM_OF_DECLARE(name, compat, init) \_OF_DECLARE(reservedmem, name, compat, init, reservedmem_of_init_fn)//////////////////////////////////////////////////...
2020-12-25 11:51:27 1023
原创 内存分配之DMA操作
DMA操作DMA内存分配有两种方式,一致性DMA和流式DMA,在早期的内存区域中有一个DMA ZONE,占用内存地址0至16M的空间,供ISA设备的DMA内存,现在有的设备DMA操作时没有地址的限制,可以在全内存范围内分配内存来用于DMA操作,所以也就不需要DMA ZONE了。\linux-4.12.4\include\linuxstatic inline void *dma_alloc_coherent(struct device *dev, size_t size,dma_addr_t *d
2020-12-25 11:30:50 3126
原创 BuildRoot安装问题
BuildRoot安装问题在vmware中CentOS-6.0中安装buildroot环境。一.空间准备为buildroot准备了40G的空间,最后剩下6G,内核编译出来后剩下6G,准备的还是偏少一点。在vmware中挂载新的分区,配置如下:fdisk -lmkfs -t ext4 /dev/sdb1 //格式化成ext4文件mount /dev/sdb1 /buildroot //挂载二.编译器准备编译BuildRoot 需要用到的编译环境是gcc-8...
2020-12-25 11:05:26 1146
转载 Vmware虚拟机共享目录配置(转载)
Vmware虚拟机共享目录配置(转载)在网络上找到资料后,复制粘贴,原有链接地址作者找不到了,现注明转载。一.配置方法方法1:直接命令行配置mount -t vmhgfs .host:/shared /mnt/hgfs方法2:在配置文件中配置/etc/fstab.host:/shared /mnt/hgfs vmhgfs defaults 0 0二. 碰到的问题2.1 问题使用“ls”查看hgfs文件夹下的共享目录,什么也看不到,于是...
2020-12-25 09:58:01 439
原创 perf性能分析测试
perf性能分析测试一.内核配置./kernel/tracekernel hacking TRACER NOP TRACER TRACER TRACE CLOCK TRACER RING BUFFER TRACER EVENT TRACING TRACET TRACING Tracers ./init...
2019-12-25 23:14:09 407
原创 perf性能分析
好文章,留个log,欢迎共享https://www.cnblogs.com/arnoldlu/p/6241297.html系统级性能分析工具perf的介绍与使用
2019-11-11 22:45:22 358
原创 android堆栈打印
android系统堆栈打印一. java层Java 堆栈打印:Log.d(TAG,Log.getStackTraceString(new Throwable()));二.C++层堆栈打印#include <utils/CallStack.h>android::CallStack stack(LOG_TAG);加入库 libutilscallstack.so三....
2019-11-08 14:45:41 681 1
转载 GPU Index
https://dri.freedesktop.org/docs/drm/gpu/index.htmlLinux GPU Driver Developer's Guidehttp://www.landley.NET/kdocs/htmldocs/drm.htmlLinux DRM Developer's Guide
2019-10-26 22:43:00 481
原创 如何从uboot传参到内核
如何从uboot传参到内核一.设置环境变量setenv("hw_name", "param");二.将变量定义到传递参数setenv bootargs ${bootargs} hw_name=${hw_name};三.内核解析Int data;static int __init do_parse_args(char *line){if (line){...
2019-09-09 09:55:34 969
原创 交叉编译及cmake的使用
交叉编译及cmake的使用一.Cmake的安装Cmake的作用是生成工程的Makefile,以便于后期的编译 $ sudo apt-get install cmake$ sudo apt-get install cmake-qt-gui 其它依赖库的安装:$ sudo apt-get install build-essential libgtk2.0-dev lib...
2019-01-08 14:07:37 975
转载 Linux设备树语法详解
概念Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树文件中,这样,如果只是硬件接口信息的变化而没有驱动逻辑的变化,驱动开发者只需要修改设备树文件信息,不需要改写驱动代码。比如在ARM Linux内,...
2018-06-24 18:28:14 268
原创 在linux-4.12.4中增加系统调用
在linux-4.12.4中增加系统调用1.在文件./include/linux/syscalls.h中定义新的系统调用函数asmlinkage long sys_statxtest(char __user*filename); 2.在文件./arch/arm/tools/syscall.tbl中增加定义行398 common statxtest ...
2018-06-09 19:44:01 603
原创 crosstool-ng-1.23.0交叉编译链制作
crosstool-ng-1.23.0交叉编译链制作一.准备crosstool-ng-1.23.01. crosstool-ng的下载地址是http://ymorin.is-a-geek.org/download/crosstool-ng/下载交叉编译链源文件crosstool-ng-1.23.02. 编译安装 ./configure –prefix=/home/cross...
2018-04-23 21:30:32 1096
转载 如何实现Linux下的U盘(USB Mass Storage)驱动
如何实现Linux下的U盘(USB Mass Storage)驱动版本:v0.7How to Write LinuxUSB MSC (Mass Storage Class) DriverCrifan Li摘要本文主要介绍了USB Mass Storage的相关的各种协议之间的关系,以及如何在Linux的USB驱动框架下实现U盘驱动 本文提供多种格式供: ...
2018-04-23 21:05:18 5398
原创 Uart驱动小结
Uart驱动小结前段时间由于工作需要,接触了下ATMEL 的sam d20g18, cortex-m0,用到了片子上的i2c和uart,使用SDK,对一些低层的细节可以考虑的少一点,开发进度也快了不少;由于正在看Linux,所以顺便也看了下Linux的tty框架,记录下来打个标记。Uart驱动是紧紧围绕数据结构tty_driver的。一.UART字符设备1.1UART字符设备操作函...
2018-01-15 13:40:06 677
原创 I2c驱动小结
I2c驱动小结前段时间由于工作需要,使用atmeld20g18,cortex-m0,上面有I2C的控制器,atmel提供了SDK,开发速度很快,由于个人的好奇心,也顺便看了下linux下的I2C驱动框架,如下文所示,打个标记。Linux下的I2C驱动主要的数据结构是围绕i2c_adapter,对于ARM上来说一个i2c控制器就对应一个adapter,如果一个控制器上有多个i2c设备则每个设...
2018-01-15 13:38:06 450
原创 EXT4文件系统之多块分配
EXT4文件系统之多块分配如果文件inode支持延迟分配,则可以略过空间查找和磁盘配额的分支,因为他们已经被准备好了。如果空间查找为0,则返回ENOSPC;如果磁盘配额为0,则返回EDQUOT;两者都无法分配空间。在多块分配的时候用到了radix_tree数据结构,将块结构描述符的块组保存到缓存中,但是这样的数据保存了两份,分别为bd_buddy和bd_bitmapstruct ext
2017-12-07 15:48:19 1317
原创 EXT4文件系统之extents的ext4_get_block()
static int ext4_ext_insert_index(handle_t *handle, struct inode *inode, struct ext4_ext_path *curp, int logical, ext4_fsblk_t ptr){ 新的数据块插入当前的路径深度里。}static int ext4_ext_split(handle_t
2017-12-06 11:36:54 1416
原创 EXT4文件系统之间接块的ext4_get_block()
static int ext4_alloc_branch(handle_t *handle, struct inode *inode, ext4_lblk_t iblock, int indirect_blks, int *blks, ext4_fsblk_t goal, ext4_lblk_t *offsets, Indirect *branch)
2017-12-06 11:34:39 1079
原创 EXT4文件系统之ext4_fill_super()
EXT4文件系统之ext4_fill_super()一.概述 在磁盘挂载的时候文件系统需要从磁盘中读取超级块来填充内存中的结构,EXT4文件系统超级块的填充是由函数ext4_fill_super()来完成的。在EXT4文件系统中,磁盘上的超级块结构是与结构体structext4_super_block的定义是一致的,大小是1K,即1024个字节。顺便提下,EXT3文件系统超级块在磁盘...
2017-11-26 21:10:26 2490
原创 EXT4文件系统的磁盘布局
EXT4文件系统的磁盘布局一.磁盘空间的计算EXT4文件系统是从EXT2/EXT3文件系统上继承和发展而来的,EXT4也使用EXT2/EXT3的一些元数据的概念,如超级块,块组描述符,块组位图,节点位图,节点数据,在EXT2/EXT3中还有间接数据块,EXT4的节点如果不用content结构的话,也应该有间接数据块的概念,因为EXT4在某些情况下会与EXT3文件系统兼容。在EXT2/E
2017-11-11 16:08:46 4429
原创 EXT3日志文件系统之address_space_operation
EXT3日志文件系统之address_space_operation一.前言Ext3文件系统具有日志的功能,有三种日志模式,journal, ordered, writeback。但是EXT3文件系统的磁盘结构与EXT2文件系统是一样的,EXT3的日志可以是一个文件(此时inode的节点号是8),也可以保存在某个分区上。二.与具体日志模式结合的写文件函数static const s
2017-11-04 13:35:57 1083
原创 EXT3文件系统的日志模式
EXT3文件系统的日志模式Ext3文件系统有三种日志模式:1. Journal日志文件系统所有数据和元数据的改变都被记入日志。这种模式减少了丢失每个文件修改的机会,但是它需要很多额外的磁盘访问。例如,当一个新文件被创建时,它的所有数据块都必须复制一份作为日志记录。这是最安全和最慢的EXT3日志模式。2. Ordered预定只有对文件系统元数据的改变才
2017-10-17 20:08:59 1451
翻译 How to use Ext4 如何使用EXT4
How to use Ext4 如何使用EXT4https://kernelnewbies.org/Ext4 有以下三种方式使用EXT4文件系统:一.创建新的EXT4文件系统对于新文件系统的安装,最简单也是推荐的方法,使用工具mkfs.ext4二.将现有的EXT3文件系统迁移到EXT4使用tune2fs和fsck文件系统工具,先卸载原有的分区,执行Tune2fs –
2017-10-17 19:37:32 530
原创 eMMC ext4综述
eMMC ext4综述一.系统的引导启动1.1系统的引导启动https://javigon.com/2012/08/24/from-poweron-to-android-the-boot-sequence/ 通常,引导设备的块0包含着主引导记录(MasterBoot Record MRB),这个块包含着设备分区表(partition table)的信息。当设备加电启动的时候
2017-10-12 14:22:09 5094
原创 Glibc-2.18编译
Glibc-2.18编译1. 下载gcc编译器,在www.kernel.org 2. 配置编译器exportPATH=$PATH:/home/super4412/gcc-4.6.3-nolibc/arm-unknown-linux-gnueabi/bin make ARCH=armCROSS_COMPILE=arm-unknown-linux-gnuea
2017-10-09 14:05:06 2538
原创 openwrt小结
openwrt小结工作中用了一段时间的openwrt,将部分经验写下来以作为小结。一.OPENWRT目录解析: Makemenuconfig Makekernel_menuconfig 1. 编译整体工程Make V=s 2. 编译某个具体的应用make package/ptpc/compile V=s cd ./package/
2017-10-09 14:01:39 379
转载 打开Linux内核启动早期的log
打开Linux内核启动早期的log有时会遇到当在u-boot中执行完bootm后,打印出start kernel后串口就没有再输出任何信息了。此时就需要打开内核早期的log:makemenuconfig Kernel hacking ---> [*] Kernel low-level debugging functions(read
2017-08-22 22:31:13 3569
原创 Transmission框架解析
Transmission框架解析一.概述因工作需要,接触了一下transmission, 了解了一下它的框架,但是没有做进一步的开发,此处作为笔记打个标记。transmission是开源的bt下载工具,可以兼容linux和windows环境;Bt协议可以参考网站:http://www.bittorrent.org/;在transmission代码中使
2017-08-22 22:20:05 2258
原创 linux各个版本的changelog
linux各个版本的changeloghttps://kernelnewbies.org/LinuxVersions
2017-03-31 21:19:16 2591
转载 ext4的extent解析
ext4的extent解析http://blog.csdn.net/kai_ding/article/details/9958031概述 前面我们在阐述ext2文件系统实现原理的时候了解到,ext2文件系统采用了直接+多级间接映射的方式来存储逻辑块号到物理块号的映射关系。这种方式不仅实现起来较为复杂,而且在面对大文件的时候效率较为低下,且会浪费很多的间接块以存储映
2017-01-31 21:56:58 4720
转载 ext4的延迟分配
ext4的延迟分配http://blog.csdn.net/kai_ding/article/details/9914629Ext4文件系统在应用程序调用write的时候并不为缓存页面分配对应的物理磁盘块,当文件的缓存页面真正要被刷新至磁盘中时,ext4会为所有未分配物理磁盘块的页面缓存分配尽量连续的磁盘块。 Linux文件系统Vfs层总是将应用程序的写入请求
2017-01-31 21:53:45 2792
转载 ext4文件系统综述
ext4文件系统综述 http://blog.csdn.net/kai_ding/article/details/9914619从本篇博客起,我们开始研究现代文件系统ext4,说其现代是因为其相比传统文件系统,有着更现代化的设计。这些先进的特性体现在本文所要叙述的以下方面。 Ext4是Linux文件系统的一次革命。在很多方面,Ext4相对于Ext3的进步要远
2017-01-31 21:50:41 412
转载 剖析 ext4
剖析 ext4 转自:http://www.ibm.com/developerworks/cn/linux/l-anatomy-ext4/index.html了解第 4 个扩展文件系统第 4 个扩展文件系统,即 ext4,是下一代的日志文件系统,它与上一代文件系统 ext3 是向后兼容的。尽管 ext4 目前还不是标准文件系统,但它将成为大部分下一代 Linux® 发行
2017-01-20 22:00:43 514
原创 linux内核栈和用户栈(二)
linux用户栈和内核栈(二)一.中断向量ARM执行的时候,有时会产生中断,根据中断的来源不同,执行不同的中断向量:中断向量地址异常中断类型异常中断模式优先级(6最低)0x0复位SVC
2016-07-12 22:59:22 638
原创 linux内核栈和用户栈
Linux内核栈和用户栈一.概述Linux进程在运行的时候有不同的状态,可以有用户态、内核态、中断异常状态,用户态由于系统调用等原因可以进入内核态,或者产生外部中断则执行中断流程。同时由于函数的调用需要进行压栈和出栈的操作,cpu硬件以arm为例存在栈指针,arm不同的运行模式下分别有对应的栈操作SP寄存器。简单的说,linux进程用户态有用户栈,内核态有内核栈
2016-05-24 22:58:52 2329
linux内核裁剪论文
2013-08-21
USB技术及应用设计
2013-08-19
arm嵌入式C编程标准教程(随书代码)
2013-08-18
ARM嵌入式C编程标准教程4
2013-08-18
ARM嵌入式C编程标准教程
2013-08-18
ARM嵌入式C编程标准教程2
2013-08-18
ARM嵌入式C编程标准教程01
2013-08-18
通信软件设计基础
2012-08-04
TD-SCDMA第三代移动通信系统、信令及实现
2012-08-03
深入浅出linux工具与编程(进程间通信部分)
2012-06-29
深入理解linux虚拟内存管理
2012-02-29
数据结构C++ 语言描述(William Ford,William Topp)
2012-02-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人