<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[kickxxx的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/kickxxx</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; kickxxx]]></copyright><item><title><![CDATA[QSPI nor flash相关驱动代码]]></title><link>https://blog.csdn.net/kickxxx/article/details/68924170</link><guid>https://blog.csdn.net/kickxxx/article/details/68924170</guid><author>kickxxx</author><pubDate>Fri, 31 Mar 2017 17:45:23 +0800</pubDate><description><![CDATA[QSPI nor flash drvier]]></description><category></category></item><item><title><![CDATA[spi nor flash使用汇总]]></title><link>https://blog.csdn.net/kickxxx/article/details/56833155</link><guid>https://blog.csdn.net/kickxxx/article/details/56833155</guid><author>kickxxx</author><pubDate>Fri, 24 Feb 2017 16:38:45 +0800</pubDate><description><![CDATA[Overview
SPI 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]]></description><category></category></item><item><title><![CDATA[uboot sf 命令用法]]></title><link>https://blog.csdn.net/kickxxx/article/details/56012456</link><guid>https://blog.csdn.net/kickxxx/article/details/56012456</guid><author>kickxxx</author><pubDate>Mon, 20 Feb 2017 14:32:13 +0800</pubDate><description><![CDATA[uboot中如果支持spi/qspi flash, 那么可以使用sf的erase, read, write命令操作spi flash


sf read用来读取flash数据到内存
sf write写内存数据到flash
sf erase 擦除指定位置,指定长度的flash内容, 擦除后内容全1


具体用法
sf probe [[bus:]cs] [hz] [mode] - i]]></description><category></category></item><item><title><![CDATA[内存分配器memblock]]></title><link>https://blog.csdn.net/kickxxx/article/details/54710243</link><guid>https://blog.csdn.net/kickxxx/article/details/54710243</guid><author>kickxxx</author><pubDate>Tue, 24 Jan 2017 20:48:42 +0800</pubDate><description><![CDATA[背景

在Linux内核开发过程中, 多少都会存在一个patch, 引入了远超预期的麻烦. 内核2.6.34开发过程中, 这个奖项非CONFIG_NO_BOOTMEM莫属
bootmem本身是个简单的,低级的内存分配器. 在引导程序的初期用来分配内存. 有人可能会想, 没有必要再增加一个内存分配器, 但是由于内存管理代码在被调用前需要很多内核功能都准备好, 要想在启动初期使用内存管理代码会大]]></description><category></category></item><item><title><![CDATA[linux kernel内存管理数据结构]]></title><link>https://blog.csdn.net/kickxxx/article/details/54695465</link><guid>https://blog.csdn.net/kickxxx/article/details/54695465</guid><author>kickxxx</author><pubDate>Mon, 23 Jan 2017 20:01:44 +0800</pubDate><description><![CDATA[mem_map 

是一个全局变量, 指向一个struct page数组, 管理着系统中的所有物理页面, 数组中的每个page结构,对应一个物理页框.
mem_map仅当系统为单NODE时有效


NODE_DATA(0)->node_mem_map
系统中的每个内存node的node_mem_map都指向一个struct page数组, 用来描述这个node所有zone的物理内存页]]></description><category></category></item><item><title><![CDATA[dts中memreserve和reserved-memory的区别]]></title><link>https://blog.csdn.net/kickxxx/article/details/54631535</link><guid>https://blog.csdn.net/kickxxx/article/details/54631535</guid><author>kickxxx</author><pubDate>Mon, 23 Jan 2017 15:04:19 +0800</pubDate><description><![CDATA[Devicetree 提供了两种方式保留内存:, reserved-memory
示例如下:
memreserve示例

/memreserve/ 0x40000000 0x01000000

reserved-memory示例

    reserved-memory {
        #address-cells = ;
        #size-cells = ;]]></description><category></category></item><item><title><![CDATA[printk 输出函数调用栈的方法]]></title><link>https://blog.csdn.net/kickxxx/article/details/54693182</link><guid>https://blog.csdn.net/kickxxx/article/details/54693182</guid><author>kickxxx</author><pubDate>Mon, 23 Jan 2017 14:22:52 +0800</pubDate><description><![CDATA[有时在linux kernel过程中, 想知道当前函数的调用者是谁, 一直没查到内这个功能, 今天终于发现了这个好东西
void * __init memblock_virt_alloc_try_nid_nopanic(
                phys_addr_t size, phys_addr_t align,
                phys_addr_t min_a]]></description><category></category></item><item><title><![CDATA[linux file命令查看elf文件信息]]></title><link>https://blog.csdn.net/kickxxx/article/details/54139583</link><guid>https://blog.csdn.net/kickxxx/article/details/54139583</guid><author>kickxxx</author><pubDate>Fri, 06 Jan 2017 18:00:21 +0800</pubDate><description><![CDATA[使用file命令查看动态链接库， 得到如下结果：
#/usr/libx32$ file ../lib32/libgomp.so.1.0.0
../lib32/libgomp.so.1.0.0: ELF 32-bit 
LSB  shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=57e]]></description><category></category></item><item><title><![CDATA[FIQ和IRQ区别]]></title><link>https://blog.csdn.net/kickxxx/article/details/51612488</link><guid>https://blog.csdn.net/kickxxx/article/details/51612488</guid><author>kickxxx</author><pubDate>Wed, 08 Jun 2016 13:37:04 +0800</pubDate><description><![CDATA[FIQ和IRQ区别 
FIQ和IRQ是两种不同类型的中断，ARM为了支持这两种不同的中断，提供了对应的叫做FIQ和IRQ处理器模式（ARM有7种处理模式）。
一般的中断控制器里我们可以配置与控制器相连的某个中断输入是FIQ还是IRQ,所以一个中断是可以指定为FIQ或者IRQ的，为了合理，要求系统更快响应，自身处理所耗时间也很短的中断设置为FIQ，否则就设置了IRQ。

如果该中断设置为了I]]></description><category></category></item><item><title><![CDATA[EMMC子系统分析-读写流程]]></title><link>https://blog.csdn.net/kickxxx/article/details/51201542</link><guid>https://blog.csdn.net/kickxxx/article/details/51201542</guid><author>kickxxx</author><pubDate>Fri, 22 Apr 2016 10:21:21 +0800</pubDate><description><![CDATA[EMMC read/write流程]]></description><category></category></item><item><title><![CDATA[Linux EMMC子系统分析-初始化流程]]></title><link>https://blog.csdn.net/kickxxx/article/details/51130888</link><guid>https://blog.csdn.net/kickxxx/article/details/51130888</guid><author>kickxxx</author><pubDate>Tue, 12 Apr 2016 13:04:53 +0800</pubDate><description><![CDATA[最近在解EMMC的一个bug，发现Linux EMMC有点小复杂，先整理个文档出来吧
用的是TI 平台，仅分析MMC，不分析SD和SDIO


1初始化
1.1mmc_init
2769 static int __init mmc_init(void)
2770 {
2774 
2775     workqueue = alloc_ordered_workqueue("kmmcd",]]></description><category></category></item><item><title><![CDATA[Out of memory, OOM killer输出信息分析]]></title><link>https://blog.csdn.net/kickxxx/article/details/50337647</link><guid>https://blog.csdn.net/kickxxx/article/details/50337647</guid><author>kickxxx</author><pubDate>Thu, 17 Dec 2015 10:42:54 +0800</pubDate><description><![CDATA[当out of memory发生时，out_of_memory函数会选择一个内核认为犯有分配过多内存 “罪行”的进程，并杀死该进程。这就有很大的几率腾出较多的空闲页，然后再跳转回重试内存分配的操作。
这里我们不讨论out_of_memory的：
1. 函数流程
2. 选择要牺牲进程的策略方法。
我们仅讨论out of memory发生时，内核输出信息的含义。


以下是一段典型的ou]]></description><category></category></item><item><title><![CDATA[pdflush 几个参数的含义]]></title><link>https://blog.csdn.net/kickxxx/article/details/41941099</link><guid>https://blog.csdn.net/kickxxx/article/details/41941099</guid><author>kickxxx</author><pubDate>Mon, 15 Dec 2014 11:49:52 +0800</pubDate><description><![CDATA[参考3.4内核文档
pdflush是Linux 内核的数据同步机制，系统通常会有多个pdflush内核线程存在，当前没有研究内核线程的数目是由什么决定的。
系统内脏页积累到一定程度，或者系统需要释放脏页占用的内存时，需要把脏页中的数据写回磁盘，这个写回机制由内核线程pdflush实现。


pdflush受多个控制参数控制，分别是:
dirty_background_bytes
di]]></description><category></category></item><item><title><![CDATA[Ubuntu broken pipe 无法启动， 解决办法]]></title><link>https://blog.csdn.net/kickxxx/article/details/30509239</link><guid>https://blog.csdn.net/kickxxx/article/details/30509239</guid><author>kickxxx</author><pubDate>Fri, 13 Jun 2014 17:44:43 +0800</pubDate><description><![CDATA[Ubuntu启动时显示

could not write Byte:Broken pipe]]></description><category></category></item><item><title><![CDATA[APK签名原理]]></title><link>https://blog.csdn.net/kickxxx/article/details/18252881</link><guid>https://blog.csdn.net/kickxxx/article/details/18252881</guid><author>kickxxx</author><pubDate>Tue, 14 Jan 2014 20:25:46 +0800</pubDate><description><![CDATA[网上已有多篇分析签名的类似文章，但是都有一个共同的问题，就是概念混乱，混乱的一塌糊涂。
在了解APK签名原理之前，首先澄清几个概念:


消息摘要 -Message Digest

简称摘要，请看英文翻译，是摘要，不是签名，网上几乎所有android签名分析的文章都对这两个概念乱用
摘要的链接http://en.wikipedia.org/wiki/Message_digest
简]]></description><category></category></item><item><title><![CDATA[Camera 的3A]]></title><link>https://blog.csdn.net/kickxxx/article/details/17147619</link><guid>https://blog.csdn.net/kickxxx/article/details/17147619</guid><author>kickxxx</author><pubDate>Thu, 05 Dec 2013 19:27:30 +0800</pubDate><description><![CDATA[就是AE AF AWB
Auto Expose

Auto Focus
Auto White Balance]]></description><category></category></item><item><title><![CDATA[移植ubuntu core到Arm开发板]]></title><link>https://blog.csdn.net/kickxxx/article/details/15341079</link><guid>https://blog.csdn.net/kickxxx/article/details/15341079</guid><author>kickxxx</author><pubDate>Mon, 11 Nov 2013 18:06:18 +0800</pubDate><description><![CDATA[最初是想把整个ubuntu移植到MX51开发板，项目不需要运行桌面系统，所以只移植了一个基本的ubuntu core系统
 1. 下载ubuntu core rootfs，关于ubuntu core参考https://wiki.ubuntu.com/Core

http://cdimage.ubuntu.com/ubuntu-core/releases/12.04/release/ubunt]]></description><category></category></item><item><title><![CDATA[移植apache2 ARM版 - 交叉编译apache2]]></title><link>https://blog.csdn.net/kickxxx/article/details/14521987</link><guid>https://blog.csdn.net/kickxxx/article/details/14521987</guid><author>kickxxx</author><pubDate>Fri, 08 Nov 2013 15:47:31 +0800</pubDate><description><![CDATA[下载apache2 http://apache.fayea.com/apache-mirror//httpd/httpd-2.4.6.tar.bz2

1. tar jxvf httpd-2.4.6.tar.bz2
2. cd httpd-2.4.6
3. ./configure --host=arm-linux --prefix=/usr/local/arm/4.4.3 --with-a]]></description><category></category></item><item><title><![CDATA[移植apache2 ARM版 - 交叉编译apr-util]]></title><link>https://blog.csdn.net/kickxxx/article/details/14521597</link><guid>https://blog.csdn.net/kickxxx/article/details/14521597</guid><author>kickxxx</author><pubDate>Fri, 08 Nov 2013 14:33:17 +0800</pubDate><description><![CDATA[下在apr-util-1.5.2 http://apache.fayea.com/apache-mirror//apr/apr-util-1.5.2.tar.gz

1. tar zxvf apr-util-1.5.2.tar.gz
2. cd apr-util-1.5.2
3. ./configure --host=arm-linux --prefix=/usr/local/arm/4.]]></description><category></category></item><item><title><![CDATA[移植apache2 ARM版 - 交叉编译apr-1.4.8]]></title><link>https://blog.csdn.net/kickxxx/article/details/14455565</link><guid>https://blog.csdn.net/kickxxx/article/details/14455565</guid><author>kickxxx</author><pubDate>Thu, 07 Nov 2013 19:35:15 +0800</pubDate><description><![CDATA[1. 下载apr-1.4.8, http://mirrors.hust.edu.cn/apache//apr/apr-1.4.8.tar.gz
2. tar zxvf apr-1.4.8.tar.gz
3. cd apr-1.4.8
4. ./configure --host=arm-linux --prefix=$PREFIX --enable-static
5. export PREF]]></description><category></category></item></channel></rss>