06 2018 档案
do_bootrk
摘要:1. LMB (logical memory blocks) lmb为uboot下的一种内存管理机制,用于管理镜像的内存。lmb所记录的内存信息最终会传递给kernel。在/include/lmb.h和/lib/lmb.c中有对lmb的接口和定义的具体描述。 lmb_init() 对lmb进行初始化 阅读全文
posted @ 2018-06-30 17:06 Garnett21 阅读(1005) 评论(0) 推荐(0)
uImage是什么
摘要:vmlinux是内核文件,zImage是一般情况下默认的压缩内核映像文件,压缩vmlinux,加上一段解压启动代码得到。而uImage则是使用工具mkimage对普通的压缩内核映像文件(zImage)加工而得。它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这 阅读全文
posted @ 2018-06-27 16:59 Garnett21 阅读(2043) 评论(0) 推荐(0)
Python学习一
摘要:第一个python程序 将上述代码文件保存为hello.py 命令行执行:python3 hello.py,输出:Hello, World! 标识符 第一个字符必须是字母表中字母或下划线 _ 。标识符的其他的部分由字母、数字和下划线组成。标识符对大小写敏感。在 Python 3 中,非 ASCII 阅读全文
posted @ 2018-06-26 11:37 Garnett21 阅读(163) 评论(0) 推荐(0)
C++解析二
摘要:C++ 类访问修饰符 数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问修饰符。一个类可以有多个 p 阅读全文
posted @ 2018-06-26 11:03 Garnett21 阅读(249) 评论(0) 推荐(0)
内联函数inline的用法
摘要:一、什么是内联函数 在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗。为了解决这个问题,特别的引入了inline修饰符,表示为内联函数。 栈空间就是指放置程式的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空 阅读全文
posted @ 2018-06-26 10:32 Garnett21 阅读(1234) 评论(0) 推荐(0)
Uboot USB模式(RK3288变砖头的解决办法)
摘要:RK3288启动后有三种模式,可以分别进行操作。 第一种是normal也就是正常的启动模式。这个模式无法刷固件。一般板子通电就是这个模式 第二种是loader模式。就是刷固件模式。这个模式可以刷各种image。按住recover按键再通电,通过uboot的检测进入这个模式 第三种是MASKROM模式 阅读全文
posted @ 2018-06-25 18:39 Garnett21 阅读(5347) 评论(0) 推荐(0)
C++ 解析一
摘要:C++ 类和对象C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。 C++ 类定义定义一个类,本质 阅读全文
posted @ 2018-06-22 11:38 Garnett21 阅读(289) 评论(0) 推荐(0)
C++基础
摘要:C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。它综合了高级语言和低级语言的特点。是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类 阅读全文
posted @ 2018-06-22 10:35 Garnett21 阅读(169) 评论(0) 推荐(0)
shell脚本分析二
摘要:Shell 基本运算符Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式 阅读全文
posted @ 2018-06-21 19:16 Garnett21 阅读(144) 评论(0) 推荐(0)
ASCII
摘要:在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以 阅读全文
posted @ 2018-06-21 18:51 Garnett21 阅读(518) 评论(0) 推荐(0)
sizeof和strlen
摘要:一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小 阅读全文
posted @ 2018-06-21 18:46 Garnett21 阅读(145) 评论(0) 推荐(0)
Uboot中汇编指令
摘要:LDR(load register)指令将内存内容加载入通用寄存器 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr。ldr r0, 0x12345678 就是把0x12345678这个地址中 阅读全文
posted @ 2018-06-21 17:00 Garnett21 阅读(419) 评论(0) 推荐(0)
Uboot代码分析
摘要:(1)确定链接脚本文件:uboot根目录下Makefile中的LDSCRIPT宏值,就是指定链接脚本(如:arch/arm/cpu/u-boot.lds)路径用的。(2)从脚本文件找入口: 在链接脚本中可以看到ENTRY()指定的入口,如:ENTRY(_start), _start就是入口(3)链接 阅读全文
posted @ 2018-06-21 14:15 Garnett21 阅读(2780) 评论(0) 推荐(1)
Daily record-June
摘要:June201. Dear, wake up! Seven o'clock now, it's time to get up. Wash your face and to have breakfast.2. We have cornmeal porridge, and do you want to 阅读全文
posted @ 2018-06-20 10:54 Garnett21 阅读(281) 评论(0) 推荐(0)
LTP(LinuxTest Project)测试工具
摘要:LTP(LinuxTest Project)是SGI、IBM、OSDL和Bull合作的项目,目的是为开源社区提供一个测试套件,用来验证Linux系统可靠性、健壮性和稳定性。LTP测试套件是测试Linux内核和内核相关特性的工具的集合。该工具的目的是通过把测试自动化引入到Linux内核测试,提高Lin 阅读全文
posted @ 2018-06-20 09:36 Garnett21 阅读(15010) 评论(0) 推荐(0)
Uboot启动流程分析(转载)
摘要:最近一段时间一直在做uboot移植相关的工作,需要将uboot-2016-7移植到单位设计的ARMv7的处理器上。正好元旦放假三天闲来无事,有段完整的时间来整理下最近的工作成果。之前在学习uboot时,在网上看了很多文章,很多都是基于老版本的的uboot,并且很多都是直接从代码开始分析,并没有将ub 阅读全文
posted @ 2018-06-19 15:00 Garnett21 阅读(430) 评论(0) 推荐(0)
指针
摘要:指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。 指针赋值 编译后输出: var asdr: 0x7ffddf977e0cstored in ip addr: 0x7ffddf977e0cvalue of * 阅读全文
posted @ 2018-06-19 14:30 Garnett21 阅读(156) 评论(0) 推荐(0)
C内存管理
摘要:运行下面的C代码 编译生成可执行文件test。 kevin@kevin-virtual-machine:~/code_debug$ ls -al test-rwxrwxr-x 1 kevin kevin 8680 3月 15 15:56 test kevin@kevin-virtual-machin 阅读全文
posted @ 2018-06-15 16:08 Garnett21 阅读(193) 评论(0) 推荐(0)
DDR3和eMMC区别
摘要:DDR3内存条和eMMC存储器区别: 1. 存储性质不同;2. 存储容量不同;3. 运行速度不同;4. 用途不同。 具体区别如下: 1、存储性质不同:eMMC是非易失性存储器,不论在通电或断电状态下,数据都是可以存储的,而DDR3内存是易失性存储器,断电同时,数据即丢失。 2、存储容量不同:eMMC 阅读全文
posted @ 2018-06-15 11:40 Garnett21 阅读(15379) 评论(0) 推荐(0)
ROM、PROM、EPROM、EEPROM、FLASH ROM、FLASH、eMMC
摘要:ROM(Read Only Memory,只读存储器)芯片:在微机的发展初期,BIOS都存放在ROM芯片中。ROM内部的资料是在ROM的制造工序中,在工厂里用特殊的方法被烧录进去的,其中的内容只能读不能改,一旦烧录进去,用户只能验证写入的资料是否正确,不能再作任何修改。如果发现资料有任何错误,则只有 阅读全文
posted @ 2018-06-14 11:07 Garnett21 阅读(2811) 评论(0) 推荐(0)
SRAM、DRAM、SDRAM、DDR、DDR2、DDR3
摘要:RAM可分为SRAM(Static RAM/静态存储器)和DRAM(Dynamic RAM/动态存储器)。SRAM是利用双稳态触发器来保存信息的,只要不掉电,信息是不会丢失的。SRAM存储元件所用MOS管多,占硅片面积大,因而功耗大,集成度低;但因为采用一个正负反馈触发器电路来存储信息,所以只要直流 阅读全文
posted @ 2018-06-13 13:32 Garnett21 阅读(3272) 评论(0) 推荐(0)
ROM和RAM区别
摘要:在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途分为主存储器和辅助存储器,主存储器又称内存储器(内存-RAM+ROM),辅助存储器又称外存储器(外存-ROM)。外存通常是磁性 阅读全文
posted @ 2018-06-12 16:48 Garnett21 阅读(4507) 评论(0) 推荐(0)
shell脚本分析一
摘要:Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell脚本(shell script),是一种为 shell 编写的脚 阅读全文
posted @ 2018-06-11 19:20 Garnett21 阅读(827) 评论(0) 推荐(0)
重要网址
摘要:个人博客: https://blog.csdn.net/fulinus linux驱动和内核: https://blog.csdn.net/21cnbao/article/details/77505330 网络编程: http://bbs.chinaunix.net/forum-viewthread 阅读全文
posted @ 2018-06-11 18:47 Garnett21 阅读(162) 评论(0) 推荐(0)
vi/vim
摘要:Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。 但是目前我们使用比较多的是 vim 编辑器。 vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。 相关文章:史上最全Vim快捷键键位图 — 入门到进阶 阅读全文
posted @ 2018-06-11 18:31 Garnett21 阅读(131) 评论(0) 推荐(0)
dump_stack使用
摘要:我们在调试内核时可以用printk打印信息。但有时我们不知道一个函数或者一个模块到底在哪里出了问题。这时我们可以用dump_stack打印信息,查看函数调用关系,找到问题的根源。使用实例: hello.c Makefile 然后make得到hello.ko在运行insmod hello.ko把模块插 阅读全文
posted @ 2018-06-11 16:28 Garnett21 阅读(328) 评论(0) 推荐(0)
BIOS、BootLoader、uboot对比
摘要:BIOS BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机 阅读全文
posted @ 2018-06-07 15:45 Garnett21 阅读(563) 评论(0) 推荐(0)
u-boot的内存分布
摘要:cpu会自动从NAND flash 中读取前4KB的数据放置在片内SRAM里(s3c2440是soc),同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000)。cpu是从0x00000000开始执行,也就是NAND flash里的前4KB内容。因为NAND FLASH连地址线都没 阅读全文
posted @ 2018-06-07 14:05 Garnett21 阅读(923) 评论(0) 推荐(0)
Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc
摘要:我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free()。 注意:动态申请的内存使用完后必须要释放,否则会造成内存泄漏,如果内存泄漏发生在内核空间,则会造成系统崩溃。 那么,在内核空间中如何申请内存呢?一般我们会 阅读全文
posted @ 2018-06-05 16:17 Garnett21 阅读(1048) 评论(0) 推荐(0)
Linux电源管理-Linux regulator framework概述
摘要:前言 1. 什么是regulator? regulator翻译为"调节器",分为voltage regulator(电压调节器)和current(电流调节器)。一般电源管理芯片(Power Management IC)中会包含一个甚至多个regulator。 2. regulator有什么作用? 通 阅读全文
posted @ 2018-06-05 13:45 Garnett21 阅读(670) 评论(0) 推荐(0)
内核错误值
摘要:rk3288内核错误值列表,定义在路径include/uapi/asm-generic/errno-base.h #define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */ 阅读全文
posted @ 2018-06-05 13:31 Garnett21 阅读(237) 评论(0) 推荐(0)
如何获取显示器的EDID信息
摘要:Q1: 为什么要写这篇文章? A1:在最近的工作中遇到了不少问题,其中很多都是和EDID相关的。可以说,作为一家以“显示”为生的企业,我们时时刻刻在与EDID打交道。EDID这东西很简单,但是如果不了解其基本原理和概念的话,会给我们的工作带来不少麻烦。因此,我决定将我对EDID的理解和调试EDID的 阅读全文
posted @ 2018-06-05 11:34 Garnett21 阅读(2442) 评论(0) 推荐(1)
VGA
摘要:VGA(Video Graphics Array )视频图形阵列,是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。不支持热插拔,不支持音频传输。 阅读全文
posted @ 2018-06-05 11:33 Garnett21 阅读(318) 评论(0) 推荐(1)
September Plan
该文被密码保护。
posted @ 2018-06-04 18:19 Garnett21 阅读(17) 评论(0) 推荐(0)
RK3288 GMAC整理
摘要:一、源文件 源码路径:\drivers\net\ethernet\rockchip\gmac 源码阅读顺序: 二、重要探针函数stmmac_dvr_probe 1. alloc_etherdev 申请网卡设备和私有数据。 struct net_device *ndev = NULL; struct 阅读全文
posted @ 2018-06-04 15:12 Garnett21 阅读(1508) 评论(0) 推荐(0)
基于嵌入式Linux的千兆以太网卡驱动程序设计及测试
摘要:一. 引言 千兆以太网是一种具有高带宽和高响应的新网络技术,相关协议遵循IEEE 802.3规范标准。采用和10M以太网相似的帧格式、网络协议和布线系统,基于光纤和短距离同轴电缆的物理层介质,更适用于交换机、服务器等数据吞吐率大的设备。本文设计实现一种基于嵌入式Linux千兆以太网卡的驱动程序,并完 阅读全文
posted @ 2018-06-04 11:49 Garnett21 阅读(1504) 评论(0) 推荐(0)
module_param和module_param_array用法
摘要:如何向模块传递参数? Linux kernel 提供了一个简单的框架。利用module_param和module_param_arra来实现。 1. module_param(name, type, perm); name 既是用户看到的参数名,又是模块内接受参数的变量; type 表示参数的数据类 阅读全文
posted @ 2018-06-01 15:36 Garnett21 阅读(479) 评论(0) 推荐(0)