- 博客(30)
- 资源 (1)
- 收藏
- 关注
原创 优快云博客迁移至博客园
综合对比优快云和博客园的易用性和简洁性,决定将优快云博客迁移至博客园,新博客链接为 https://www.cnblogs.com/tinylaker/ ,优快云博客不再更新使用。
2018-10-18 12:57:30
1440
原创 am3354 SGX移植续
am3354 SGX移植续概要问题解决方法概要本文接上一篇文章《am3354 SGX移植》,记录下实际开发过程中遇到的问题。问题具体移植步骤可以参考上篇文档,这里说下开发中遇到的问题。在运行./335x-demo时,提示omaplfb: OMAPLFBInitFBDev: Device 0: Unknown FB format错误。# ./335x-demo0x10205releas...
2018-09-30 13:36:53
914
原创 《嵌入式linux内存使用与性能优化》读书笔记
嵌入式linux内存使用与性能优化–读书笔记前言本书的重点分为系统内存和性能优化,前4章着重内存使用,尽量减少进程的内存使用量,定位和发现内存泄漏;后5章着重与如何让系统性能优化,加快执行速度。嵌入式linux内存使用与性能优化–读书笔记前言第1章 内存的测量第2章 进程内存优化第3章 系统内存优化第4章 内存泄漏第5章 性能优化的流程第6章 进程启动速度第7章...
2018-09-06 17:42:25
1073
1
原创 am3354 SGX移植
am3354 SGX移植am3354 SGX移植什么是SGX编译SDK测试验证什么是SGX官方手册上说明TI am3354使用POWERVR SGX530图形核心,加速2D/3D图形应用。那么如果要使用3D加速,就必须基于SGX技术,使用视频加速需要Opengl ES2.0,需要调用SGX驱动。而SGX core并没有包含在ARM core中,但是它的Gr...
2018-09-05 11:59:12
1511
转载 AM3354 CPSW网卡驱动
经过两周的调试,终于初步实现网卡的发送功能。在这里参考了uboot的beaglebone网卡驱动和《tcp/ip详解卷二》1、在前几篇博文中,讲解了网卡的mdio初始化过程,那么网卡lan8710a是如何与am335x处理器通信的呢?首先看一张连接图:我们都知道osi七层协议,最底下的是物理层和数据链路层,也就是mac和phy。有一部分处理器是自带mac层,也就是只需要pyh网卡一...
2018-06-04 11:08:01
8003
原创 如何使用git获取linux内核代码仓库
如何使用git获取linux内核代码仓库目录用 [TOC]来生成目录:如何使用git获取linux内核代码仓库目录下载指定分支获取分支log信息添加其他远程分支获取远程分支切换分支查看远程分支信息本篇文档在ubuntu 14.04使用[git][6]获取linux kernel stable源码,仓库地址可以查看官方地址https://git.k...
2018-03-27 09:44:21
4365
原创 spin_lock, spin_lock_irq, spin_lock_irqsave的区别
kernel version: 2.6.26linux kernel代码中有很多自旋锁的使用场景,同时存在很多spin_lock的接口定义,那么怎么去区分这些接口的使用场景呢?首先来看spin_lock的实现:#define spin_lock(lock) _spin_lock(lock)void __lockfunc _spin_lock(spinlock_t *lock){
2016-12-27 10:45:58
1308
原创 TI-AM335x uboot分析
最近手头有一块AM335x的开发板,之前没有玩过TI A8的板子,所以想借由这块开发板了解下TI的芯片。在TI的官网上找到了这款开发板的相关资料和SDK开发套件,真的很赞。首先来看芯片的启动部分: 一般的芯片启动流程都是Romcode –> BL1 –> BL2 –> Kernel –> User Image, TI的芯片也不例外,Romcode –> ML0(SPL) –> uboot.
2016-11-24 21:52:30
4844
原创 使用openjtag烧写s3c6410
手上的6410开发板闲置很长时间了,最近重新拾起来玩玩。因为换了新电脑所以很多编译环境也要重新搭,所以使用crosstool-ng重新做好工具链。假设开发板的flash上没有任何程序,如果需要烧写flash的话需要借助一些工具。 下面介绍下openjtag的烧录裸板的过程,ubuntu环境下需要使用openocd,openocd配置脚本,telnet,minicom1.打开终端,输入sudo op
2016-11-22 14:36:41
1481
原创 通过git获取u-boot
可以查找u-boot官网,通过命令行使用git clone git://git.denx.de/u-boot.git u-boot远程克隆一个版本库,然后使用使用git tag查看release tag版本信息再使用git checkout “tag"获取需要的版本
2016-11-22 10:24:34
1430
原创 SDRAM Timing理解
使用sdram需要对soc sdram controller进行配置,主要设置地址线,位宽和时序,其中sdram的位宽和行列地址比较容易理解。CLK:SDRAM工作的时钟,并且所有的输入信号都是在CLK的上升沿进行检测的,也就是说我们给SDRAM给的任何命令,一定要在CLK的上升沿保持稳定,以免SDRAM获取我们给出的命令时出现错误。CKE:时钟使能信号,是用来控制SDRAM内部时钟是否工作的一个信
2016-11-21 17:28:28
2267
原创 align&&balignl代码对齐测试
align&&balignl代码对齐测试学习uboot代码时,发现启动代码中有`.balignl 16,0xdeadbeef`对齐,对于某些编译器来说,可能并不会代码对齐,所以需要进行手动对齐,否则就会出现编译报错。举例说明(以下代码并无实际含义).globl _start_start: b reset nop .byte 0xffreset: ldr r0,=0x
2016-10-11 09:45:53
1046
转载 JTAG-SWD模式接线方法
Jink 与开发板的连接方式 JLINK的20针JTAG的1脚、20脚分别与开发板上JTAG口的1脚、20脚用杜邦线相连 JLINK的20针JTAG的7脚(JTMS)、9脚(JTCK)分别与开发上的JTAG口(JTAG 即SWDIO和SWCLK)的JTMS脚、JTCK脚用杜邦线相连
2016-10-10 08:51:06
4430
原创 高速缓存cache
**总结来自于文章《arm嵌入式系统开发--软件设计与优化》**cache是一种容量小,速度快的存储阵列,它位于主存和处理器核之间,保存着最近一段时间处理器涉及到的主存内容。在某些场合需要进行数据读取操作时,为了改善系统性能,处理器尽可能从cache中读取数据,而不从主存中获取数据,这主要是为了减小慢速存储器给处理器造成的访问瓶颈问题。
2016-08-03 14:22:14
1057
原创 linux start kernel
## linux start kernel查找对应arm架构下的arch/arm/kernel/vmlinux.lds.S, 找到入口点ENTRY(stext),这个stext在arch/arm/kernel/head.S中定义,定义如下: .section ".text.head", "ax" .type stext, %functionENTRY(stext) msr
2016-07-22 15:08:04
906
原创 uboot简介
手上有个mtk mips架构的板子,刚好趁着这个机会重新学习下uboot。1.Makefile首先我们进入主Makefile,找到整个Makefile的目标文件,ALL = u-boot.srec uboot.bin System.mapu-boot.srec:u-boot$(OBJCOPY) ${OBJCFLAGS} -O srec $uboot.bin:u-boot$(
2016-07-20 18:17:23
589
转载 Netlink实现热拔插监控
新的Linux内核使用udev代替了hotplug作为热拔插管理,虽然有udevd管理热拔插,但有时候我们还是需要在应用程序中检测热拔插事件以便快速地处理,比如在读写SD卡的时候拔下SD卡,那么需要立即检测出该情况,然后结束读写线程,防止VFS崩溃。Netlink是面向数据包的服务,为内核与用户层搭建了一个高速通道,是udev实现的基础。该工作方式是异步的,用户空间程序不必使用轮询等技术来检测热拔
2016-07-14 09:34:51
617
转载 linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent_helper
热插拔(hotplug,打这个词的时候我常常想到热干面)不一定非要指类似U盘那样的插入拔出,此处的热插拔广义上讲,是指一个设备加入系统,内核如何通知用户空间。举个简单的例子,如果你的电脑中有块PCI网卡,针对该网卡的驱动程序以内核模块的形式被编译(obj-m),那么Linux系统在启动过程中是如何自动加载该网卡的驱动模块呢?大家都知道现在udev负责干这事,其实除了udev,还可以有其他的手法,你
2016-07-14 09:32:18
682
转载 linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent
1.kobject, ktype, ksetkobject代表sysfs中的目录。ktype代表kobject的类型,主要包含release函数和attr的读写函数。比如,所有的bus都有同一个bus_type;所有的class都有同一个class_type。kset包含了subsystem概念,kset本身也是一个kobject,所以里面包含了一个kobject对象。另外
2016-07-14 09:31:00
834
原创 linux学习--字符设备驱动
linux驱动有基本的接口进行注册和删除,这里不再做详细说明,本文主要关注linux字符设备驱动框架实现的细节。 1.字符设备驱动抽象结构 字符设备驱动管理的核心对象是字符设备,从字符设备驱动程序的设计框架出发,内核为字符设备抽象出数据结构struct cdev,定义如下:include/linux/cdev.hstruct cdev { struct kobject kobj;
2016-02-26 18:46:46
587
原创 linux学习--理解系统调用
1.什么是系统调用系统调用,指的是操作系统提供给用户程序调用的一组特殊接口,用户程序可以根据这组接口获得操作系统内核的服务。它规定了用户进程陷入内核的具体位置,或者说规划了用户访问内核的路径,只能从固定位置进入内核。2.linux的系统调用对于现代操作系统来说,系统调用是用户空间和内核通讯的普遍手段,linux也不例外。按照功能区域,linux系统调用大致分为进程控制,文件访问
2016-02-26 11:04:14
761
转载 ARM汇编伪指令
在 ARM 汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。 在 ARM 的汇编程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制
2016-02-16 10:51:52
1679
原创 s3c6410 RomCode文档读后总结
最近无意中看到一篇关于s3c6410 RomCode的介绍,结合自己的经验,做个总结。首先贴张图,具体描述下该芯片的启动方式及具体流程。因为s3c6410的板子多数是从SD或者Nand方式启动,重点就先放在Nand启动上。启动基本流程:1. 上图中的IROM为芯片固化程序,被称为BL0,开机后最先运行,它会去做一些硬件初始化动作,代码里通过检测GPN[15:13]管脚状态从相应设备指定区域BL1中...
2015-10-21 12:54:29
2257
转载 Linux内核的整体架构
本文转载自 http://www.wowotech.net/linux_kenrel/11.html1. 前言本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。注:本文和其它的“Linux内核分析”文章都基于如下约定:
2015-05-23 21:05:58
590
转载 公钥和私钥
转载自 http://blog.youkuaiyun.com/tanyujing/article/details/17348321公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。用电子邮件的方式说明一下原理。 使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的: 1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人
2015-04-08 08:50:59
423
转载 怎么看时序图--nand flash的读操作详解
http://blog.chinaunix.net/uid-28852942-id-3992727.html这篇文章不是介绍 nand flash的物理结构和关于nand flash的一些基本知识的。你需要至少了解你手上的nand flash的物理结构和一些诸如读写命令操作的大概印象,你至少也需要看过关于nand flash控制寄存器的说明。由于本人也没有专
2015-04-02 21:17:10
871
转载 什么是高内聚/低耦合?
什么是高内聚、低耦合? 起因:模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内聚性。耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。 耦合性分类(低――高): 无直接耦合;数据耦
2015-04-01 20:32:24
662
转载 MIPI学习
博文转载自 http://blog.youkuaiyun.com/g_salamander/article/details/9163455以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点:一、D-PHY1、传输模式LP(Low-Power) 模式:用于传输控制信号,最高速率 10 MHz
2014-01-20 19:24:03
2245
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人