自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(198)
  • 收藏
  • 关注

转载 kernel下nand flash的文件系统总结

1、FLASH转换层(FTL)EXt2/EXT3/EXT4文件系统可以通过FTL实现对flash的支持,因为FTL可以将闪存flash模拟成磁盘结构。在ext2文件系统的基础上上,为了保证数据的一致性ext3文件系统增加了日志功能。在ext3文件系统的基础上ext4文件系统增加了对大文件(T单位级的文件)的支持,另外对于每个目录下的文件个数没有了限制。2、J...

2018-08-06 00:11:00 402

转载 makefile 中wildcard

在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN...)。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。需要注意的是:这种情况下规则中...

2018-07-19 10:52:00 231

转载 u-boot SPL的理解

uboot分为uboot-spl和uboot两个组成部分。SPL是Secondary Program Loader的简称,第二阶段程序加载器,这里所谓的第二阶段是相对于SOC中的BROM来说的,之前的文章已经有所介绍,SOC启动最先执行的是BROM中的固化程序。BROM会通过检测启动方式来加载第二阶段bootloader。uboot已经是一个bootloader了,那么为什么还多一个...

2018-04-21 15:13:00 297

转载 mount –o remount,rw /

mount –o remount,rw / 重新挂载为已经挂载了的文件系统(以读写权限挂载),需要注意的是,挂载点必须是一个已经存在的目录,这个目录可以不为空。一般用于此目录下的文件为ro权限,需要临时变更为可修改权限。参数:-o <选项> 指定挂载文件系统时的选项,有些也可写到在 /etc/fstab 中。常用的有: defaults 使用...

2018-04-08 16:30:00 949

转载 linux内存管理

linux子系统包括:物理地址:出现在CPU地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。线性地址(虚拟地址):在32位CPU架构下,可以表示4G的地址空间,16进制0xffffffff。逻辑地址:逻辑地址--->物理地址:首先cpu利用段氏内存管理单元,将逻辑地址转换成线性地址。再利用页式内存管理单元,把线性地址最终转换成物...

2018-02-13 14:22:00 93

转载 跟我学Makefile(七)

定义模式规则 使用模式规则来定义一个隐含规则。一个模式规则就好像一个一般的规则,只是在规则中,目标的定义需要有“%”字符。“%”的意思是表示一个或多个任意字符。在依赖目标中同样可以使用“%”,只是依赖目标中的“%”的取值,取决于其目标。 有一点需要注意的是,“%”的展开发生在变量和函数的展开之后,变量和函数的展开发生在make 载入 Makefile 时,而模式规则中的“%”则发...

2018-01-29 16:22:00 81

转载 跟我学Makefile(六)

shell 函数:和反引号“`”是相同的功能 。shell 函数把执行操作系统命令后的输出作为函数返回。 contents := $(shell cat foo)files := $(shell echo *.c)这个函数会新生成一个 Shell 程序来执行命令,所以你要注意其运行性能,如果你的 Makefile 中有一些比较复杂的规则,并大量使用了这个函数,那么对于你...

2018-01-29 14:08:00 85

转载 跟我学Makefile(五)

文件名操作函数 每个函数的参数字符串都会被当做一个或是一系列的文件名来对待。 $(dir <names...>)名称:取目录函数——dir。功能:从文件名序列<names>中取出目录部分。目录部分是指最后一个反斜杠(“/”)之前的部分。如果没有反斜杠,那么返回“./”。返回:返回文件名序列<names>的目录部分。示例: $...

2018-01-29 10:17:00 89

转载 跟我学Makefile(四)

使用函数:函数调用,很像变量的使用,也是以“$”来标识的,其语法如下: $(<function> <arguments>)或是${<function> <arguments>}<function>就是函数名,<arguments>是函数的参数,参数间以逗号“,”分隔,而函数名和参数之间...

2018-01-28 22:51:00 99

转载 跟我学Makefile(三)

紧接着跟我学Makefile(二)继续学习:变量高级用法(1)变量值的替换 :替换变量中的共有的部分,其格式是“$(var:a=b)”或是“${var:a=b}”,把变量“var”中所有以“a”字串“结尾”的“a”替换成“b”字串。这里的“结尾”意思是“空格”或是“结束符”。 foo := a.o b.o c.obar := $(foo:.o=.c)第二行:把“$...

2018-01-28 20:41:00 102

转载 跟我学Makefile(二)

命令出错:每当命令运行完后, make 会检测每个命令的返回码,如果命令返回成功,那么 make 会执行下一条命令。如果一个规则中的某个命令出错了(命令退出码非零),那么 make 就会终止执行当前规则,这将有可能终止所有规则的执行。 为了做到忽略命令的出错,我们可以在 Makefile 的命令行前加一个减号“-”(在Tab 键之后),标记为不管命令出不出错都认为是成功的。 ...

2018-01-28 15:54:00 183

转载 Kconfig文件说明2

Konfig详解:当执行#make menuconfig时会出现内核的配置界面,所有配置工具都是通过读取"arch/$(ARCH)Kconfig"文件来生成配置界面,这个文件就是所有配置的总入口,它会包含其他目录的Kconfig。Kconfig的作用:Kconfig用来配置内核,它就是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,...

2018-01-22 15:36:00 124

转载 Kconfig文件说明

Kconfig的格式下面截取/drivers/net下的Kconfig文件中的部分内容:# Network device configurationmenuconfig NETDEVICES default y if UML depends on NET bool "Network device support" ...

2018-01-22 14:26:00 97

转载 kernel内核配置说明

内核过程中的配置这一步做详细的说明吧,总结一下,多数内容源于网上的多篇文章。首先,配置时可能出现的选项,对其选择先来个说明吧。Typically, your choices for each option are shown in the format [Y/m/n/?] The capitalized letter is the default, and can b...

2018-01-22 13:59:00 517

转载 makefile中ifeq与ifneq dev/null和dev/zero简介 dd命令

ifeq语法是ifeq"<arg1>;""<arg2>;",功能是比较参数“arg1”和“arg2”的值是否相同,相同时为1ifneq:ifneq"<arg1>;""<arg2>;"其比较参数“arg1”和“arg2”的值是否相同,如果不同,则为真。/dev/null:或称空设备,是一个特殊的设备文件,它丢弃...

2018-01-18 15:31:00 657

转载 嵌入式linux内核制作、根文件系统制作

嵌入式系统构成:主要由bootloader、kernel、以及根文件系统三部分组成。内核制作步骤:制作嵌入式平台使用的linux内核制作方法与pc平台上的linux内核基本一致1.清除原有配置与中间文件x86:make distcleanarm:make distclean2.配置内核x86:make menuconfigarm: make ...

2018-01-14 19:38:00 154

转载 内核 模块开发

linux内核的整体结构非常庞大,组件合成分为2种:(1):把所有的组件都编译进内核文件,即zImage或bzImage。这种有两个缺点:  a、生成的内核文件过大。  b、如果想要添加或删除某个组件,需要重新编译整个内核。(2)内核模块机制:需要该组件时,动态地添加到正在运行的内核中。内核模块特点:(1)模块本身并不被编译进内核文件(ZImage/bzImage...

2018-01-14 02:01:00 117

转载 内核配置

make config:基于文本模式的交互式配置。make menuconfig:基于文本模式的菜单型配置。(推荐使用,空格键选择:*:y,M:M,空格:N)make oldconfig:使用已有的配置文件(.config),但会询问新增的make xconfig:图形化的配置。(需要安装图形化系统)make distclean会删掉所有文件。配置结果:在内核的...

2018-01-13 18:22:00 90

转载 git查看某个文件的修改历史

git log --pretty然后使用下面的命令可列出文件的所有改动历史,注意,这里着眼于具体的一个文件,而不是git库,如果是库,那改动可多了去了~git log --pretty=oneline 文件名如:root@ubuntu:android_src/packages/apps/Mms/src/com/android/mms/ui# git l...

2018-01-09 17:09:00 83

转载 移植nand驱动补缺:make mrproper与make clean以及make distclean,find/grep. makefile

make mrproper与make clean以及make distclean的区别:linux内核源码根目录下面的makefile中有很清晰的解析:useage:“clean”:Remove most generated files but keep the config and enough build support to build external modules...

2018-01-05 20:21:00 130

转载 repo使用

repo常用指令:1.repo init(下载repo并克隆manifest)repo init -u URL [OPTIONS]Options:-u:制定一个URL,其连接到一个manifest仓库-m:在manifest仓库中选择一个xml文件-b:选择一个manifest仓库中的一个特殊的分支命令repo init要完成如下操作:1....

2018-01-02 00:21:00 145

转载 git使用总结

1.把目录初始化成仓库: git init2.添加文件: git add readme.txt3.把文件提交到仓库: git commit -m "wrote a readme file"4.查看仓库当前动态: git status5.查看差异: git diff readme.txt (工作目录区与仓库的区别)6.查看历史记录: git...

2017-12-10 18:53:00 52

转载 notepade++使用

Notepad++也可以实现双视图/双窗口对比显示,目前最新版本(6.32)只能支持双视图显示,而且只能支持左右视图,希望后续版本能得到改进。我们打开两个需要对比显示的源文件默认的情况下是分成了两个标签(tag)。这个时候把我们需要分离到第二视图的源文件作为当前的主活动标签(这里是intra8x8Chroma.vhd),依次点击菜单栏->视图->移动/复制当前文档...

2017-11-27 10:21:00 609

转载 linux内核源代码、配置与编译

内核源代码下载:www.kernel.orgLinux内核源代码采用树形结构进行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具可读性。 linux内核代码最好不要在windows下解压,因为同名(大小写)会丢失一些code。source insight:添加汇编文件:option->Document option 添加.c、.h、.s、.S内核目...

2017-11-10 00:58:00 125

转载 linux内核介绍

linux系统可以分为:包括用户空间和内核空间两个部分。现代cpu通常实现了不同的工作模式,以ARM为例,实现了7种工作模式:用户模式、快速中断、外部中断、管理模式、数据访问中止、系统模式、未定义指令异常。X86也实现了4个不同的级别:Ring0~Ring3.Ring0下,可以执行特权指令,也可以访问IO设备等。在Ring3则有许多限制。linux系统利用CPU的这一...

2017-10-29 20:57:00 64

转载 块设备

1.块设备(磁盘、SD卡)2.网络设备3.字符设备这三种设备驱动程序。块设备与字符设备区别:1.读取数据单位不同,块设备固定。2.块设备随机访问、字符设备顺序访问。VFS:虚拟文件系统。是对各种具体文件系统的一种封装,为用户程序访问文件提供统一的接口。Disk cache:当用户发起文件访问请求的时候,首先到Disk Cache中寻找文件是否...

2017-10-27 01:02:00 91

转载 mutex_lock

多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理。mutex_lock(struct mutex *lock)和mutex_unlock(struct mutex *lock)是加锁和解锁。(1)mutex和spin lock的区别和应用(sleep-waiting和busy-waiting的区别):...

2017-10-25 15:08:00 760

转载 .tar.xz文件解压

从kernel.org下载下来的code几乎时这个结尾。xz是绝大数linux默认就带的一个压缩工具解压tar.xz文件的方法:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包补充:目前可以直接使用 tar xvJf ***.tar.xz来解压。转载于:https://www...

2017-10-24 23:57:00 80

转载 module_init module_exit

像你写C程序需要包含C库的头文件那样,Linux内核编程也需要包含Kernel头文件,大多的Linux驱动程序需要包含下面三个头文件:#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h> 其中,init.h 定义了驱动的初始化和退出相关的函数,kerne...

2017-10-24 20:22:00 68

转载 EXPORT_SYMBOL使用

EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的。2.6就必须用EXPORT_SYMBOL() 来导出来(因为2.6默认不到处所有的符号)。1、EXPORT_SYMBOL的作用EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内...

2017-10-24 19:18:00 78

转载 sscanf,sscanf

在#include<stdio.h>定义函数 int sscanf (const char *str,const char * format,........);函数说明:sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。返回值 成功则返回参数数目,失败则...

2017-10-24 15:15:00 55

转载 strtoul函数的使用

函数原型:unsigned long strtoul(const char *nptr,char **endptr,int base )参数1:字符串起始地址参数2:返回字符串有效数字的结束地址,这也是为什么要用二级指针的原因。参数3:转换基数。当base=0,自动判断字符串的类型,并按10进制输出,例如"0xa",就会把字符串当做16进制处理,输出的为10。更多的下面详...

2017-10-23 19:14:00 329

转载 MBR和GPT(分区)

MBR:Master Boot RecordGPT:Guid Partition Table(全局唯一标识符分区表)GPT is the new standard and is gradually replacing MBRMBRThe MBR resides at the very beginning of the hard disk and it holds the...

2017-10-23 09:42:00 144

转载 文件编程---库函数

基于C函数库的文件编程是独立于具体的操作系统平台的,不管是在Windows、Linux还是其他的操作系统中,都是使用这些函数。使用库函数进行程序设计可提高程序的可移植性 。在系统调用方式实现的文件访问中,使用文件描述符(一个整数)来指向一个文件。在库函数方式的文件访问中,使用FILE类型来表示一个打开的文件,这个类型中包含了管理文件流的信息。而指向该类型的指针FILE* 则被称之为文...

2017-10-22 16:33:00 121

转载 linux文件编程----系统调用

linux中文件编程可以使用两种方法:1)、linux系统调用2)、C语言库函数前者依赖于linux系统,后者与操作系统是独立的。在 linux系统中,所有打开的文件也对应一个数字,这个数字由系统来分配,我们称之为:文件描述符 1、创建文件:int creat(const char *filename,mode_t mode)filename:要创建的文件...

2017-10-22 15:19:00 87

转载 makefile工程管理

当工程量少时,可以采用gcc文件单个编译。像linux kernel代码,1万多个时采用make管理。linux程序员必须学会使用GNU make来构建和管理自己的软件工程。make在执行时,需要一个命名为Makefile的文件。makefile文件描述了整个工程的编译、链接等规则。Makefile例子:一、Makefile术语:规则:用于说明如何生成一...

2017-10-21 15:43:00 144

转载 GDB调试程序

GDB:是一款强大的程序调试工具。GDB主要完成下面三个方面的功能:1、启动被调试程序。2、让被调试的程序在指定的位置停住。3、当程序被停住时,可以检查程序状态(如变量值 )。GDB使用流程:1.编译生成可执行文件:gcc -g tst.c -o tst2.启动GDBgdb tst3. 在 main函数处设置断点break main4. 运行程序...

2017-10-21 11:30:00 58

转载 list_for_each_entry解析

双向链表及链表头:建立一个双向链表通常有一个独立的用于管理链表的链表头,链表头一般是不含有实体数据的,必须用INIT_LIST_HEAD()进行初始化,表头建立以后,就可以将带有数据结构的实体链表成员加入到链。INIT_LIST_HEAD (&nphy_dev_list);定义:#define list_for_each_entry(pos, h...

2017-10-19 16:59:00 130

转载 GCC编译

gcc(GNU C compiler)基本用法:gcc [options] [filename] -O outputnameoptions:编译器所需要的编译选项。filenames:要编译的文件名-o output_filename:确定可执行文件的名称为output_filename。如果不给出这个选项,gcc就给出预设的可执行文件a.out。 编译选项:...

2017-10-19 00:37:00 115

转载 shell编程

Shell脚本是一个包含一系列命令序列的文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到执行 。语法:Shell脚本的第一行必须是如下格式:#!/bin/sh符号#!用来指定该脚本文件的解析程序。在上面例子中使用/bin/sh来解析该脚本。当编辑好脚本后,如果要执行该脚本,还必须使其具有可执行属性 注释:在进行shell编程时,以#开头的句子表示注释,直到这一行...

2017-10-16 00:26:00 64

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除