<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[T9-MUSHAN的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/aa1050416698</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; aa1050416698]]></copyright><item><title><![CDATA[container_of宏到底做了什么？？？]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/82822800</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/82822800</guid><author>aa1050416698</author><pubDate>Sun, 23 Sep 2018 16:57:04 +0800</pubDate><description><![CDATA[首先，她的作用是： 如果知道了结构体中某个元素的指针，就可以利用该宏得到指向结构体首地址的指针，这样可以用指针访问结构体的所用变量。

在Linux内核中，她的定义如下：

#define container_of(ptr, type, member)  ({            \
    const typeof(((type *)0)-&amp;gt;member) * __mptr = (ptr...]]></description><category></category></item><item><title><![CDATA[分析uboot启动过程]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/78907400</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/78907400</guid><author>aa1050416698</author><pubDate>Tue, 26 Dec 2017 22:41:57 +0800</pubDate><description><![CDATA[1、uboot的作用。
相比于linux操作系统，uboot本身不大，能够自启动，作为嵌入式设备的引导启动，是个好的选择。此外，它具有源码开放、支持多种嵌入式操作系统、丰富的设备驱动源码等特点。
作用：
1)、为系统启动之前初始化硬件设备、为操作系统准备软件环境。
2)、引导操作系统内核启动。
 
2、uboot如何启动内核、如何传参给内核？
2.1、如何启动内核？
在嵌入式设备没]]></description><category></category></item><item><title><![CDATA[Makefile简单介绍]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/78169795</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/78169795</guid><author>aa1050416698</author><pubDate>Sat, 07 Oct 2017 15:25:02 +0800</pubDate><description><![CDATA[1.gcc 的使用：



把源文件编译成.o
文件： gcc -c
源文件 -o
目标文件
把.o
文件编译成可执行文件： gcc 
目标文件 -o 执行文件
gcc 常用的选项：
-c： 生成.o
文件
-o： 指定生成的名字
-I： 添加头文件搜索路径
-L： 添加库搜索路径

-Wall： 列出所有警告信息



2.Makefile 
文件的]]></description><category></category></item><item><title><![CDATA[C语言存储类]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/78118345</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/78118345</guid><author>aa1050416698</author><pubDate>Wed, 27 Sep 2017 22:50:11 +0800</pubDate><description><![CDATA[存储类、 作用域、 生命周期、 链接属性
C 语言符号有 3 种连接属性： 外部连接、 内部连接、 无连接。
内存有多种管理方法： 栈、 堆、 数据段、 bss 段、 .text 段······一个变量的存储类属性就是描述这个变量存储在何种内存段中。
代码段： 在 Linux 中又叫文本段（.text） 。
只读数据段： const 修饰的变量一般存在这段中， 不同平台可能不一样。
数据]]></description><category></category></item><item><title><![CDATA[安装交叉编译工具链]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/78106761</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/78106761</guid><author>aa1050416698</author><pubDate>Tue, 26 Sep 2017 20:51:56 +0800</pubDate><description><![CDATA[版本为---arm-2009q3.tar.bz2
虚拟机---ubuntu10.4


指定相应的安装路径，如/usr/local/mushan_arm，将安装包解压到该目录下：tar -jxvf arm-2009q3.tar.bz2（这个是当前路径中执行）。OK，此时的应用程序就被安装在/usr/local/mushan_arm/arm-2009q3/bin目录下了。




]]></description><category></category></item><item><title><![CDATA[S5PV210启动过程分析]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/78074257</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/78074257</guid><author>aa1050416698</author><pubDate>Sat, 23 Sep 2017 23:04:24 +0800</pubDate><description><![CDATA[25287827]]></description><category></category></item><item><title><![CDATA[ARM汇编的一些常识]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/78067910</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/78067910</guid><author>aa1050416698</author><pubDate>Fri, 22 Sep 2017 23:28:33 +0800</pubDate><description><![CDATA[常用ARM指令

       1. 数据传传输指令
         mov   例：mov r1 r2  @两个寄存器数据之间的传递
   mvn   与mov的区别是：mov是原封不动的将数据传输，而mvn是将数据按位取反后再传递

       2. 算术指令
           add sub rsb adc sbc rsc 

       3. 逻辑指令
   ]]></description><category></category></item><item><title><![CDATA[S5PV210的定时器]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/78034861</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/78034861</guid><author>aa1050416698</author><pubDate>Tue, 19 Sep 2017 21:32:53 +0800</pubDate><description><![CDATA[一、PWM定时器

S5PV210有5个PWM定时器，其中0、1、2、3各自对应一个外部GPIO，可以通过这些对应的GPIO产生PWM波形信号输出。5个PWM定时器的时钟源为PCLK_PSYS，Timer0和Timer1共同使用一个预分频器、Timer2、3、4共同使用一个预分频器；每个timer有一个专用的独立的分频器；预分频器和分频器构成了2级分频系统，将PCLK_PSYS两级分频后生成...]]></description><category></category></item><item><title><![CDATA[S5PV210中断系统]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/78034784</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/78034784</guid><author>aa1050416698</author><pubDate>Tue, 19 Sep 2017 21:24:15 +0800</pubDate><description><![CDATA[中断实现机制：异常向量表

1、中断是指CPU在执行程序的过程中，遇到异常情况需要处理，CPU就会中断当前的程序，保存当前程序运行处的必要参数，跳去执行异常程序，处理结束后再返回之前程序的间断处，继续执行原程序。

2、异常向量表是CPU中某些特定地址的特定定义，当中断发生时会去该向量表查询对应的异常事件，并处理该事件，完成后返回。

3、对于SOC来说，发生复位、软中断、中断、快速中断、取指令异...]]></description><category></category></item><item><title><![CDATA[S5PV210时钟系统]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/78034503</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/78034503</guid><author>aa1050416698</author><pubDate>Tue, 19 Sep 2017 20:54:54 +0800</pubDate><description><![CDATA[一、时钟来源

SOC一般的时钟来源有：

1.外部时钟信号直接输入

2.外部晶振+内部时钟发生器

3.外部晶振+内部时钟发生器+PLL倍频+内部分频到各各外部时钟

S5PV210建议的工作频率：800MHz-1.2GHz,一般设置为1GHz。

二、S5PV210时钟系统

有3个时钟域：MSYS、DSYS、PSYS

各域对应的时钟：

1.MSYS：CPU（cortex-A8内核...]]></description><category></category></item><item><title><![CDATA[SDRAM和重定位]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/78034399</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/78034399</guid><author>aa1050416698</author><pubDate>Tue, 19 Sep 2017 20:44:11 +0800</pubDate><description><![CDATA[一、栈的介绍
1.设置栈的原因：C语言运行需要一定条件，那就是栈，而这些栈应该在启动代码运行时分配，以供后面C语言的运行。
2.C语言与栈的关系：C语言的局部变量都需要栈来实现。如果在启动代码开始时，没有给C部分设置合理的栈地址，那么C语言的局部变量就找不到地方存放，导致程序死掉。
3.CPU在各种模式下的栈：每种模式下都有自己独立的SP寄存器(r13),在各种模式下使用不同的栈，每个应用程]]></description><category></category></item><item><title><![CDATA[给uGUI添加自定义中文字库]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/77926612</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/77926612</guid><author>aa1050416698</author><pubDate>Sun, 10 Sep 2017 23:05:05 +0800</pubDate><description><![CDATA[给uGUI添加自定义的中文字库
 
1.如何生成中文字库文件？
 
利用UCGUIGenApp软件生成.c字库文件，添加到工程中，打开此文件如图所示，然后复制GUI_FontHZ_Vladimir_Script_21字库名，将其添加到ucgui系统中。
（导出前先选“选择字体”，“指定范围导出GBK码”是我们自定义显示的字符，“导出GBK码.C文件”是导出全部中文字库）


 
]]></description><category></category></item><item><title><![CDATA[linux根文件系统]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/73306142</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/73306142</guid><author>aa1050416698</author><pubDate>Thu, 15 Jun 2017 22:58:07 +0800</pubDate><description><![CDATA[根文件系统
为什么需要根文件系统？ 
1、init进程的应用程序挂在根文件系统上。
2、根文件系统提供了根目录 / 。
3、内核启动后的应用层配置（etc目录）在根文件系统上。（可以认为，发行版 =内核+rootfs）。
4、Shell命令程序在根文件系统上（ls、cd等）。
 （可以说，内核配上rootfs才能工作）
 
根文件系统什么？是特殊用途的文件系统，某种文件系统的格式。]]></description><category></category></item><item><title><![CDATA[内核启动分析]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/73305875</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/73305875</guid><author>aa1050416698</author><pubDate>Thu, 15 Jun 2017 22:55:55 +0800</pubDate><description><![CDATA[内核启动分析
顶层Makefile分析：和uboot的Makefile写法、规则等是一样的。 在编译内核时，也可以通过命令行给内核Makefile传参。（make o=XXX，指定不在源代码目录下编译，而是到另一个单独文件夹下编译）

两个重要参数：ARCH和CROSS_COMPILE。ARCH决定当前配置编译的路径，如ARCH = arm的时候，将来在源码目录下去操作的arch/arm目录]]></description><category></category></item><item><title><![CDATA[linux内核配置]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/73305505</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/73305505</guid><author>aa1050416698</author><pubDate>Thu, 15 Jun 2017 22:53:23 +0800</pubDate><description><![CDATA[操作系统的核心功能
1、内存管理
2、进程调度
3、硬件设备管理
4、文件系统
操作系统的一些拓展功能
协议栈 
应用程序包
 
内核根目录下的主要文件介绍
1、Kbuild  (kernel build)  即是内核编译，是linux内核编译体现需要的。
2、Makefile  用来管理整个工程，内核的总Makefile 。
 
目录介绍
1、arch  不同架构CP]]></description><category></category></item><item><title><![CDATA[mkconfig脚本分析]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/73305130</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/73305130</guid><author>aa1050416698</author><pubDate>Thu, 15 Jun 2017 22:50:37 +0800</pubDate><description><![CDATA[mkconfig脚本分析
 
开发板使用的CPU是S5PV210，所以要找uboot中针对S5PV210或者S5PC110进行移植的作为参考。
参考include/configs/s5p_goni.h，对应的board在uboot/board/samsung/goni这个目录。
 
对应的cpu、board文件夹分别为：
cpu: u-boot-2013.10\arch\arm\cpu]]></description><category></category></item><item><title><![CDATA[从三星官方移植uboot]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/71056399</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/71056399</guid><author>aa1050416698</author><pubDate>Mon, 01 May 2017 15:56:50 +0800</pubDate><description><![CDATA[从三星官方移植uboot
 
一、移植总体步骤
1、前提安装正确的交叉编译工具链，在Makefile中可查看。
2、配置使用：make smdkv210single_config，此宏定义所在目录为 
   /include/configs/smdkv210single.h
3、配置完后，make distclean  make smdkv210single_config  make]]></description><category></category></item><item><title><![CDATA[uboot的环境变量]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/70495899</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/70495899</guid><author>aa1050416698</author><pubDate>Sun, 23 Apr 2017 13:43:19 +0800</pubDate><description><![CDATA[uboot的环境变量
1、环境变量的作用
我们可以不用修改uboot的源代码，而是通过修改环境变量来影响uboot运行时的一些数据特征和特性。比如更改bootdelay、baudrate等环境变量时，不用到uboot源码去修改代码，然后重新编译下载，而是在终端下更改就行。如更改bootdelay：
 
2、环境变量的优先级
如果uboot代码当中有一个值，环境变量中也有一个值，那么ubo]]></description><category></category></item><item><title><![CDATA[S5PV210  DNW刷机]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/70477248</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/70477248</guid><author>aa1050416698</author><pubDate>Sat, 22 Apr 2017 21:16:09 +0800</pubDate><description><![CDATA[S5PV210  DNW刷机
事先做的准备
1.安装好驱动，并且保证DNW软件能下载。
2.打开SecureCRT,确保能接收显示数据。
3.设置启动方式为 [OM0：OM5]=[101101]。
步骤
1.按住开机键，DNW下载地址配置为0xd0020010，下载x210_usb.bin文件。
 
 
 
2.DNW下载地址设置为23e0000]]></description><category></category></item><item><title><![CDATA[SD卡刷机笔记]]></title><link>https://blog.youkuaiyun.com/aa1050416698/article/details/70477121</link><guid>https://blog.youkuaiyun.com/aa1050416698/article/details/70477121</guid><author>aa1050416698</author><pubDate>Sat, 22 Apr 2017 21:05:53 +0800</pubDate><description><![CDATA[SD卡刷机笔记                            
一、破坏iNand
  首先破坏iNand中的BootLoader，以便让系统从SD启动。
  破坏的方法：系统正常启动成功后，进入控制台执行以下两条命令。
   1.busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512]]></description><category></category></item></channel></rss>