![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式Linux
文章平均质量分 85
kickxxx
这个作者很懒,什么都没留下…
展开
-
spi nor flash使用汇总
OverviewSPI flash, 分为spi flash, DUAL spi flash, QUAD spi flash,3-wire spi, 4-wire spi, 6-wire spi. 在clock一定的情况下, 理论上线数越多速度越快NOR flash和Nand flash相比 NOR缺点: 价格贵, 容量小, 擦除块大, 擦除速度慢, N原创 2017-02-24 16:38:45 · 25118 阅读 · 2 评论 -
SDRM/DDR 寻址
DDR内部组成DDR内部是由多个存储阵列组成的,我们称这些存储阵列为bank,早期的SDRAM内部分割成两个bank,后来是4个,这是SDRAM规范中规定的最大bank数,在DDR2标准中,BANK的数目提高到8个。每一个存储阵列就像表格一样,表格的每一个单元格是最小存储单元,大小可以为4, 8, 16,也就是位宽,位宽决定了数据线位数。如果想使用32bit的数据总线宽度,那么可以使用原创 2013-02-23 14:43:06 · 5668 阅读 · 1 评论 -
SDRAM和处理器寻址的几点理解
作者:田凯文日期:2011-6-6 14:59:16 PS:本人总结,备于日后查阅,如若转载,请注明出处QQ:1324343063 最近在分析uboot中关于6410的 cpu_init.s,这是对DDR的配置,由于DDR是SDRAM的升级,所以就先看了一下SDRAM,以下是最近的总结。看下图: 这是64M(32M+32M),SDRAM的原理图转载 2012-02-03 15:39:23 · 6969 阅读 · 4 评论 -
ARM linux 建立页表过程
paging_init 用来建立页表,初始化zone的memory map void *zero_page; sort(&meminfo.bank, meminfo.nr_banks, sizeof(meminfo.bank[0]), meminfo_cmp, NULL); build_mem_type_table(); sanity_check_memi原创 2013-03-05 18:13:37 · 7809 阅读 · 0 评论 -
Android sendevent/getevent 用法
getevent/sendevent源码这两个命令的源码在system/core/toolbox/下,sendevent.c getevent.cgetevent使用getevent获得/dev/input/eventX设备汇报的事件,这个命令还会输出所有event设备的基本信息,如下:add device 1: /dev/input/event1 name:原创 2012-04-23 09:50:25 · 35304 阅读 · 0 评论 -
UBIFS介绍 - MTD网站
原文地址 http://www.linux-mtd.infradead.org/doc/ubifs.htmlBig red note在了解UBIFS之前一定要注意UBIFS和任何传统的文件系统是不一样的:UBIFS不是运行在block device之上的(比如hard disk, MMC/SD卡,USB flash驱动等等)。UBIFS是运行于raw flash之上。请在开始U翻译 2011-07-04 18:27:35 · 22732 阅读 · 3 评论 -
Android 启动性能优化 - uboot篇
时间测量在mx51平台的uboot里,使用get_timer可以获得比较精确的计时,get_timer的使用贯穿了uboot性能调整的整个过程性能优化方法1. 减小uboot镜像的大小,去掉不需要的驱动,不需要的命令,减少uboot的大小可以从两个方面获得好处,首先会节省驱动初始化时间,其次会使uboot镜像变小,从磁盘读取uboot镜像所需的时间也变小了。2. 优化gener原创 2012-03-16 16:37:49 · 7322 阅读 · 4 评论 -
tw9912 寄存器配置
给出4组,还是以FAE给的配置给为准NTSC_in_656i_output: 输入为CVBS NTSC模拟信号,输出为隔行BT656w FF 00 ; Page 00w 01 78w 02 40w 03 20w 04 00w 05 01w 06 03w 07 02w 08 14w 09 F0w 0A 1Bw 0B D0w 0C CCw 0D 15w原创 2012-12-10 08:49:27 · 4579 阅读 · 4 评论 -
imx51 ROM boot code 启动分析
启动模式mx51支持四种启动模式,这些模式的选择是通过IC package上的焊点来决定的(BOOT_MODE 0/1),在reset后会采样这两个焊点,然后把他们的状态保存到SRC Boot Mode Register(SBMR) 寄存器。焊点连接到地对应logic 0,对于logic 1,freescale推荐使用NVCC_PER3四种启动模式分别为: internal, rese原创 2012-02-06 15:21:32 · 7184 阅读 · 0 评论 -
Android 启动性能优化 - kernel篇
题目有点大,其实kernel的启动性能调整和android基本没什么关系,我想应该适用所有使用linux的嵌入式设备时间测量说到性能调整,第一件该干的的事就是看下时间到底消耗在哪里。俗话说的好:知己知彼,百战百胜;过度优化,万恶之首因此手头上要有称心如意的时间测试工具,方法。其实我是不太喜欢工具的,工具这东西可遇不可求,而且不如写代码顺手。1. PRINTK_TIME在内核原创 2012-02-24 18:23:54 · 7444 阅读 · 7 评论 -
V4L2_FIELD_INTERLACED_BT和V4L2_FIELD_INTERLACED的区别
看定义V4L2_FIELD_INTERLACED:Images contain both fields, interleaved line byline. The temporal order of the fields (whether the top or bottom field is first transmitted) depends on the current video原创 2012-07-06 10:40:02 · 7028 阅读 · 1 评论 -
隔行模拟摄像头缺点
现在项目使用的是模拟摄像头输出为CVBS信号,通过video AD转换芯片转换为BT656信号,输出的BT656信号再接到MX51 CSI接口。MX51通过对top bottom两场交错生成一帧图像,对于静态图像,效果还可以,但是对于运动图像则会出现锯齿,尤其按一定比例缩放时,运动部分还可能会出现很粗的线条。出现锯齿的原因:由于上下两场拍摄的时间点是不同的,导致合并后运动部分无法重原创 2011-08-08 17:15:48 · 4925 阅读 · 57 评论 -
ioremap返回的地址
ioremap和vmalloc一样,都会返回vmalloc区的虚拟地址,但是ioremap并不会分配任何物理内存,ioremap也需要建立新的页表来访问物理页面。ioremap获取的虚拟地址空间需要使用iounmap来释放。ioremap主要用来映射设备的物理内存到内核的虚拟地址空间,这样,内核就可以通过这些虚拟地址空间访问设备内存。使用ioremap需要注意几点:1. 尽原创 2011-07-20 17:00:54 · 7332 阅读 · 2 评论 -
SDTV EDTV和HDTV
SDTV Standard-definition TV 标准清晰电视EDTV Enhenced-definition TV 增强清晰电视HDTV High-definition TV 高清电视SDTV包括 480i 576iEDTV包括 480p 576pHDTV 720P 1080i 1080p480i: i 表示interlaced 隔行的意思,48原创 2011-12-20 15:00:33 · 3448 阅读 · 0 评论 -
Android S5PV210 fimc驱动分析 - fimc_regs.c
fimc_regs.c是fimc框架操作camera 硬件的接口,fimc框架把所有硬件相关的操作都放在这个文件中 100 int fimc_hwset_camera_source(struct fimc_control *ctrl) 101 { 102 struct s3c_platform_camera *cam = ctrl->cam; 103 u32 cfg原创 2012-06-16 15:53:32 · 17842 阅读 · 7 评论 -
S5PV210 FIMC DMA linear mode和 tile mode的区别
字面含义: 线性模式,图块模式tile在早期游戏设计里面叫做图块模式,是地图的基本单位,一副地图由多个tile组成,tile远大于像素 ,一般width height相等并且是2的幂次方早期的游戏画面比较呆,画面有很多重复的地方,把重复的地方抽取出来做基本图元,就是tile。放在S5PV210 FIMC控制器上下文中,FIMC可能要处理NV12T这种tile类型的格式,因此原创 2012-07-06 18:13:13 · 4996 阅读 · 0 评论 -
V4L2 camera 驱动 capture测试程序
在网上找了一个测试程序, 看了看,是根据capture.c修改的。测试步骤如下1. gcc -o capture_image capture_image.c2. ctrl+alt+f1 切换到ubuntu的控制台,切换到控制台模式是因为在图形模式下看不到测试图形,这可能和framebuffer的设置有关3. sudo modprobe vivi4. sudo ./capture_i原创 2011-04-20 16:07:00 · 10242 阅读 · 8 评论 -
ARM处理器 的linux分页机制
ARM MMU只支持两级页表地址转换,也就是采用三级分页映射,能够满足32bitCPU的存储管理需求ARM支持的页大小有几种 - 1M, 64K, 4K, 1K。在linux kernel中,ARM采用了4K大小的页,4K大小的页决定了虚拟地址的低12bit留作偏移地址。从上图可以看出,页全局目录索引有效位数是12bit,二级索引有效位数是8bit,页内偏移量为12bit。原创 2013-02-28 17:42:09 · 7434 阅读 · 0 评论 -
mx51 TVOUT cvbs双屏支持
配置mx51支持cvbs输出UI和VIDEO1. 编译tvout模块2. 修改uboot的kernel启动参数,uboot中配置为tvout输出PAL制式cvbs信号set bootargs_base 'setenv bootargs console=ttymxc0,115200 di0_primary video=mxcdi1fb:YUV444,TV-PAL tve'原创 2011-10-11 14:02:02 · 5033 阅读 · 8 评论 -
QSPI nor flash相关驱动代码
QSPI nor flash drvier原创 2017-03-31 17:45:23 · 8029 阅读 · 1 评论 -
uboot sf 命令用法
uboot中如果支持spi/qspi flash, 那么可以使用sf的erase, read, write命令操作spi flashsf read用来读取flash数据到内存sf write写内存数据到flashsf erase 擦除指定位置,指定长度的flash内容, 擦除后内容全1具体用法sf probe [[bus:]cs] [hz] [mode] - i原创 2017-02-20 14:32:13 · 31560 阅读 · 0 评论 -
Out of memory, OOM killer输出信息分析
当out of memory发生时,out_of_memory函数会选择一个内核认为犯有分配过多内存 “罪行”的进程,并杀死该进程。这就有很大的几率腾出较多的空闲页,然后再跳转回重试内存分配的操作。这里我们不讨论out_of_memory的:1. 函数流程2. 选择要牺牲进程的策略方法。我们仅讨论out of memory发生时,内核输出信息的含义。以下是一段典型的ou原创 2015-12-17 10:42:54 · 20717 阅读 · 1 评论 -
Linux EMMC子系统分析-初始化流程
最近在解EMMC的一个bug,发现Linux EMMC有点小复杂,先整理个文档出来吧用的是TI 平台,仅分析MMC,不分析SD和SDIO1初始化1.1mmc_init2769 static int __init mmc_init(void)2770 {2774 2775 workqueue = alloc_ordered_workqueue("kmmcd",原创 2016-04-12 13:04:53 · 13367 阅读 · 0 评论 -
EMMC子系统分析-读写流程
EMMC read/write流程原创 2016-04-22 10:21:21 · 9349 阅读 · 0 评论 -
移植ubuntu core到Arm开发板
最初是想把整个ubuntu移植到MX51开发板,项目不需要运行桌面系统,所以只移植了一个基本的ubuntu core系统 1. 下载ubuntu core rootfs,关于ubuntu core参考https://wiki.ubuntu.com/Corehttp://cdimage.ubuntu.com/ubuntu-core/releases/12.04/release/ubunt原创 2013-11-11 18:06:18 · 27141 阅读 · 0 评论 -
使用kermit与Android设备串口通讯
安装sudo apt-get install ckermit配置编辑~/.kermrc文件如下:set line /dev/ttyS0set speed 115200set carrier-watch offset handshake noneset flow-control nonerobustset file type binset file n原创 2012-02-03 10:12:24 · 2162 阅读 · 0 评论 -
v4l2_field理解
video的帧可区分为隔行和逐行: 逐行顺序的传输一帧所有的行,而隔行则把一帧划分成两个fields,分别保存帧的奇数行和偶数行,被称作奇场和偶场. 阴极射线电视机需要交替的显示两场来组成一个完整的帧,交替的时延需要我们交替的传输奇场和偶场。这个奇怪技术的引入是因为:在刷新率接近电影时,图片会消退的过快。使用奇偶场可以避免使用双倍的buffer以及额外的带宽需求。 首先要明确camera翻译 2011-04-27 18:35:00 · 18054 阅读 · 4 评论 -
移植apache2 ARM版 - 交叉编译pcre-8.33
1. 下载pcre-0.83, http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz2. tar zxvf pcre-8.33.tar.gz3. cd pcre-8.33我的交叉编译工具链位置在/work/icar2/prebuilt/linux-x86/toolchain/arm-eabi-原创 2013-11-07 18:09:36 · 5090 阅读 · 3 评论 -
移植apache2 ARM版 - 交叉编译apr-util
下在apr-util-1.5.2 http://apache.fayea.com/apache-mirror//apr/apr-util-1.5.2.tar.gz1. tar zxvf apr-util-1.5.2.tar.gz2. cd apr-util-1.5.23. ./configure --host=arm-linux --prefix=/usr/local/arm/4.原创 2013-11-08 14:33:17 · 4365 阅读 · 0 评论 -
移植apache2 ARM版 - 交叉编译apr-1.4.8
1. 下载apr-1.4.8, http://mirrors.hust.edu.cn/apache//apr/apr-1.4.8.tar.gz2. tar zxvf apr-1.4.8.tar.gz3. cd apr-1.4.84. ./configure --host=arm-linux --prefix=$PREFIX --enable-static5. export PREF原创 2013-11-07 19:35:15 · 5356 阅读 · 0 评论 -
uboot 内核传参
uboot在启动内核时,会向内核传递一些参数。据说bootloader有两种方式向内核传递参数,另外一种我不了解,本文仅介绍arm架构下tag结构的传参方式。uboot在启动内核时,会传递一些参数,包括:RAM位置和尺寸,命令行参数,initrd起始位置和尺寸,framebuffer物理地址和尺寸,开发板版本等。uboot把每一个参数打包到一个tag结构中(tag结构参见表1),tag列表原创 2013-04-25 10:42:51 · 1998 阅读 · 0 评论 -
Android S5PV210 camera驱动(tw9912)小结
之前没接触过三星的开发板,更不了解S5PV210,TW9912这款AD芯片也是第一次接触,三星FAE又不给力(其实是没有),调试camera过程中,一会怀疑TW9912配置不对,一会怀疑三星FIMC驱动有问题,比较痛苦,今天终于调出了正确的图像,发贴和大家分享一下TW9912 配置TW9912这款AD芯片,TechWell FAE给了几组寄存器配置:PAL in 656P原创 2012-07-04 15:37:44 · 16849 阅读 · 9 评论 -
VIDIOC_S_INPUT 作用
G_INPUT和S_INPUT用来查询和选则当前的input一个video设备节点可能对应多个视频源,比如saf7113可以最多支持四路cvbs输入,如果上层想在四个cvbs视频输入间切换,那么就要调用S_INPUT ioctl来切换。因此saf7113驱动需要实现一个选择和查询input的接口,当上层应用调用v4l2的G_INPUT S_INPUT时,会调用saf7113的这个接口。原创 2011-12-20 17:37:22 · 11312 阅读 · 2 评论 -
调试freescale CSI sa7113 camera的心得
最近在freescale mx51平台上调试saf7113芯片,写下一些调试的心得1. 一个好的工具 YUVtools.exe这个工具可以用来查看拍摄出来的YUV图片效果, 来发现到底什么地方出了问题,很方便,选项非常多,在调试中碰到的很多问题,比如失帧图片模糊,格式不对等等都可以通过这个工具对图片进行分析2. 概念的了解: BT656, MX51 IPU, SAF7113 V4L原创 2011-06-21 18:29:00 · 9771 阅读 · 41 评论 -
mx51 TVOUT分析
1397 static int __init enable_tve_setup(char *options)1398 {1399 g_enable_tve = true;1400 1401 return 1;1402 }1403 __set原创 2011-09-21 10:37:42 · 74035 阅读 · 1 评论 -
UBI介绍
翻译 - 来源MTD网站 http://www.linux-mtd.infradead.org/doc/ubi.htmlTable of contentsBig red noteOverviewSource codeMailing listUser-space t翻译 2011-08-22 10:21:27 · 25433 阅读 · 4 评论 -
UBIFS设计简介 - A Brief Introduce to the Design of UBIFS
项目闲暇,想了解下UBIFS,就先从UBIFS的设计文档翻译开始吧,以后有机会有时间能分析下UBIFS源码 flash memory文件系统需要异地更新(out-of-place updates). 这是因为flash存储在写之前必须擦除, 并且每次擦除后只能写一次。如果擦除块很小并且擦除速度很快,那么擦除块可以看作是磁盘扇区,然而事实并非如此。读取整个擦除快,擦除它然后回写更新的数据翻译 2011-06-28 19:18:00 · 4818 阅读 · 0 评论 -
s-video CVBS接口 区别
复合视频信号接口(CVBS)其传输的是复合视频信号,可用一根或一组普通的音视频线传输,其中黄色的为视频信号,白色的为左声道音频信号,红色的为右声道音频信号S端子由于复合视频信号(CVBS)是将亮度和色度信号采用频谱间置方法复合在一起,会导致亮,色的串扰以及清晰转载 2011-08-11 11:07:05 · 8306 阅读 · 1 评论 -
freescale R10 ipu lib 分析 - ipu_param_mem.h
ipu_param_mem.h 21 struct ipu_ch_param_word { 22 uint32_t data[5]; 23 uint32_t res[3]; 24 }; 26 struct ipu_ch_param { 27 struct ipu_ch_param_word word[2]; 28 };每个ipu原创 2011-06-24 16:35:00 · 3876 阅读 · 4 评论 -
freescale R10 ipu lib 分析 - ipu_common.c
ipu_common.c Common IPU API implementation,主要是为MXC V4L2和ipu device驱动提供IPU channel控制函数 110 static inline int _ipu_is_ic_chan(uint32_t dma_chan) 111 { 112 return ((dma_chan >= 11) &原创 2011-06-24 11:09:00 · 5719 阅读 · 19 评论