01 2019 档案
摘要:一. 相关重要文件 1.1. Kconfig 1.1.1. 什么是kconfig文件 a. Kconfig文件分布在各目录下构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单(描述了Menuconfig的内容) 1.1.2. Kconfig的格式 1.1.
阅读全文
摘要:一. 什么是QT a. Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。 二. tslib移植和测试 2.1. 什么是tslib a. tslib是一个开源的触摸屏支持库。它给上层的应
阅读全文
摘要:一. uboot第二阶段初识 1.1. uboot第二阶段应该做什么 a. 概括来讲uboot第一阶段主要就是初始化了SoC内部的一些部件(譬如看门狗、时钟),然后初始化DDR并且完成重定位。 b. 由宏观分析来讲,uboot的第二阶段就是要初始化剩下的还没被初始化的硬件。主要是SoC外部硬件(譬如
阅读全文
摘要:一. uboot第一阶段初识 1.1. 什么是uboot第一阶段 1.1.1. 启动os三个阶段 1.1.1.1. bl0阶段 a. 这段代码是三星固化到iROM中,可以查看《S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf》 b. 这段代码
阅读全文
摘要:一. 链表初识 1.1. 什么是链表 a. 链表是一种常见的基础数据结构 b. 链表是由节点(结构体)组成的,节点中包含:有效数据和指针。 c. 链表的内存要求比较灵活,一般不能用栈,也不能用data数据段。只能用堆内存。 1.2. 链表与数组差别 1.2.1. 链表就是用来解决数组的大小不能动态扩
阅读全文
摘要:一. Makefile 配置 1.1. make xxx_config 1.1.1. 笔者实验时是make x210_sd_config a. x210_sd_config是Makefile下的一个目标 1.2.1. x210_sd_config 相关代码分析 a. @表示静默执行 b. MKCON
阅读全文
摘要:一. uboot源码获取 1.1. 从板级厂家获取开发板BSP级uboot(就是由开发板厂家提供的) 1.2. 从SOC厂家获取相同SOC的BSP级uboot 1.3. 从uboot官方下载 1.4. 什么是bsp a. BSP就是board support package(板级支持包,一般由开发板
阅读全文
摘要:一. shell脚本简介 1.1. shell语言 1.1.1. 编写shell脚本时使用的语言就是shell语言,又叫脚本语言。 1.1.2. 常用shell语言:sh、bash、csh、ksh、perl、python等 1.1.3. linux下最常用的脚本就是bash,我们学习也是以bash为
阅读全文
摘要:一. 安装 tftp 1.1. 安装 tftp 所需的软件。 a. 安装 tftp-hpa,tftpd-hpa,前者是客户端,后者是服务程序, 在终端下输入 sudo apt-get install tftp-hpa tftpd-hpa,安装 tftp-hpa 和 tftpd-hpa b. 安装 x
阅读全文
摘要:一. uboot运行时环境变量分布 1.1. 环境变量有2份,一份在Flash中,另一份在DDR中。uboot开机时一次性从Flash中读取全部环境变量到DDR中作为环境变量的初始化值,然后使用过程中都是用DDR中这一份,用户可以用saveenv指令将DDR中的环境变量重新写入Flash中去更新Fl
阅读全文
摘要:一. 常用简单命令 1.1. help命令 a. 帮助查看其他命令的使用方法,类型linux下man b. 示例: help help x210 # help help help [command ...] - show help information (for 'command') 'help'
阅读全文
摘要:一. 什么是uboot 1.1. uboot的由来 1.1.1. uboot是SourceForge上的开源项目 1.1.2. uboot就是由一个人发起,然后由整个网络上所有感兴趣的人共同维护发展而来的一个bootloader(与linux相似)。 1.1.3. uboot经过多年发展,已经成为事
阅读全文
摘要:一. 为什么需要代码重定位 1.1. 链接地址和运行地址不同 1.1.1. 只有位置无关编码才能在运行地址和链接地址不同的情况下运行。 a. 位置无关编码(PIC,position independent code):汇编源文件被编码成二进制可执行程序时编码方式与位置(内存地址)无关。 b. 位置有
阅读全文
摘要:一. 为什么需要链接脚本 1.1. 从源码到可执行程序(主要有三个步骤:预编译、编译、链接) 1.1.1. 预编译 a. 预编译器执行。譬如C中的宏定义就是由预编译器处理,注释等也是由预编译器处理的。 1.1.2. 编译 a. 由编译器来执行。把源码.c .S编程机器码.o文件。所以可以看到每个源码
阅读全文
摘要:一. 什么是cache 1.1. cache简介 a. Cache 即高速缓冲存储器,是位于 CPU 与内存之间的高速存储器,它的容量比内存小但交换速度快。 b. ARM处理器的主频为上百M甚至几G,而一般的SDRAM的存储周期是很慢的,相对于CPU来说,这时,如果我们把程序和数据都存储在SDRAM
阅读全文
摘要:一. 设置栈 1.1. C语言运行时需要和栈的意义 1.1.1. “C语言运行时(runtime)”需要一定的条件,这些条件由汇编来提供。C语言运行时主要是需要栈 1.1.2. C语言与栈的关系 a. C语言中的局部变量都是用栈来实现的。如果我们汇编部分没有给C部分预先设置合理合法的栈地址,那么C代
阅读全文
摘要:一. 反编译(反汇编)简介 1.1. 为什么要反编译(汇编 assembly 反汇编 dissembly) 1.1.1. 反编译原因如下: a. 逆向破解程序,作为一个有逼格,素养的我肯定不会这么干的。哈哈 b. 调试程序时,反汇编代码可以帮助我们理解程序(我们学习时使用objdump主要目的是这个
阅读全文
摘要:一. ARM裸机之Makefile 1.1. Makefile 分析 led.bin: led.o arm-linux-ld -Ttext 0x0 -o led.elf $^ arm-linux-objcopy -O binary led.elf led.bin arm-linux-objdump
阅读全文
摘要:一. 安装arm-2009q3 1.1. 在虚拟机创建安装文件夹 1.1.1. 在/usr/local/下创建/usr/local/arm文件夹 1.1.2. 将arm-2009q3.tar.bz2放到相关文件夹 1.1.3. 解压压缩包 a. tar -jxvf arm-2009q3.tar.bz
阅读全文
摘要:一. 刷机初识 1.1. 什么是刷机 a. 刷机就是通过各种手段把相应镜像烧录到设备中,让设备可以运行起来。常见的刷机如:安卓刷机,QT刷机 1.2. S5PV210刷机镜像 1.2.1. 刷安卓所需要的镜像 a. uboot镜像: uboot.bin b. linux kernel镜像:zImag
阅读全文
摘要:一个阿里云apache服务器配置两个或多个域名for Linux: 默认已经配置好了阿里云提供的一键web安装,可以参考:http://www.42iot.com/?id=8 修改/alidata/server/httpd/conf/vhosts下的文件phpwind.conf 打开phpwind.
阅读全文
摘要:由于之前搭建个人博客和个人网站使用的虚拟空间到期了,于是我干脆换成虚拟主机搭建博客和网站,正好阿里云有活动花了9.9买了半年的虚拟主机。 Z-BlogPHP是一款由PHP语言开发的博客程序; ZBlogPHP可以运行在window,Linux等众多平台上,支持PHP 5.2 - 5.6,PHP 7.
阅读全文
摘要:最近由于公司项目需要STM8S105K这颗芯片,这两天我也捣鼓了下,正好现在开通了博客,以此记录下自己的工作。 开发环境: window10操作系统; IAR for STM8; 开发工具; window10电脑; STM8S105K4t6最小系统; ST-link烧录器 本人之前工作上主要使用ST
阅读全文
摘要:在小型嵌入式设备中有时需要简单的人机2交互界面,小型GUI有很多,比较常用的有STenWin,UCGUI,enwin,Embedded Wizard GUI。对与STenWin和enWin区别主要在STenWin在ST芯片上商用也完全是免费的。本blog介绍enWin使用部分中文字库。 开发环境:
阅读全文
摘要:根据公司需要开发了以ML5238电池管理芯片+STM8S为核心的电池管理系统。由于前期对BMS系统还是了解甚少,开发起来也遇到了不少困难。再开发管理系统的同时,我也开发了管理系统的上位机,上位机用C#开发我也是第一次。经过自己一个月我开发,终于把管理系统和上位机开发完成了。今天特写篇文章来写下心得以
阅读全文
摘要:在我们用VS编好上位机后,就可以在自己电脑运行上位机,但是想其他人电脑运行上位机可能就行不通了,因为其他人电脑不一定有所需要的运行环境。这时我们就需要打包安装,把运行软件所需要的环境都打包在安装包里。 编译软件:Visual Studio 2017,Microsoft Visual Studio 2
阅读全文
摘要:宇宙第一开发工具的功能太强大了,今天我们来介绍怎么解决VS2017的C++功能运行emwin模拟机不能运行的解决部分 编译软件:Visual Studio 2017; emwin模拟机版本:SeggerEval_WIN32_MSVC_MinGW_GUI_V540; 电脑系统:window10; 其中
阅读全文
摘要:首先设置程序的启动地址,STM32默认的启动地址是从0x8000000开始的,现在我要设置程序向后偏移10K地址,也就是从0x8002800启动。 需要分两步完成上面操作: 一.Keil MDK设置; 设置keil MDK的target 设置flash download。 二.设置程序偏移量 程序偏
阅读全文
摘要:一. 预处理器(Preprocessor) 1.1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 1.1.1. 我在这想看到几件事情: 1) #define 语法的基
阅读全文
摘要:#include <stdio.h> #define offset_of(type,member) ((int)&(((type *)0)->member)) #define container_of(ptr,type,member) ({\ const typeof(((type*)0)->mem
阅读全文
摘要:#ubuntu的内核源码树,如果要编译在ubuntu中安装的模块就打开这2个 #KERN_VER = $(shell uname -r) #KERN_DIR = /lib/modules/$(KERN_VER)/build # 开发板的linux内核的源码树目录 KERN_DIR = /root/d
阅读全文
摘要:#include <linux/init.h> // __init __exit #include <linux/module.h> // module_init module_exit static int __init hello_init(void) { printk(KERN_ALERT "
阅读全文
摘要:#include <linux/init.h> // __init __exit #include <linux/module.h> // module_init module_exit #include <linux/fs.h> //file_operations #include <asm/ua
阅读全文
摘要:原文:https://blog.csdn.net/gtkknd/article/details/79975773 1.设备 1.1. Linux下的设备通常分为三类,字符设备,块设备和网络设备。 1.2. 常见的字符设备有鼠标、键盘、串口、控制台等。 1.3. 常见的块设备有各种硬盘、flash磁盘
阅读全文
摘要:#include <linux/init.h> // __init __exit #include <linux/module.h> // module_init module_exit #include <linux/fs.h> //file_operations #include <asm/ua
阅读全文
摘要:一. 什么是协处理器? 1.1. SoC内部另一处理核心,协助主CPU实现某些功能,被主CPU调用执行一定任务。 1.2. ARM设计上支持多达16个协处理器,但是一般SoC只实现其中的CP15.(cp:coprocessor) 1.3. 协处理器和MMU、cache、TLB等处理有关,功能上和操作
阅读全文
摘要:一. 数据处理汇编指令 1.1. 数据传输指令 1.1.1. mov(Move) 指令 示例:mov r0, r0, LSL#3 ; r0 = r0* 8 mov pc, r14 ; 退出到调用者 movs PC, r14 ; 退出到调用者并恢复标志位 1.1.2. mvn(move negativ
阅读全文
摘要:#include <linux/init.h> // __init __exit #include <linux/module.h> // module_init module_exit #include <linux/fs.h> //file_operations #include <asm/ua
阅读全文
摘要:#include <linux/init.h>// __init __exit #include <linux/module.h> // module_init module_exit #include <linux/fs.h> //file_operations #include <asm/uac
阅读全文
摘要:一. machine_desc结构体 1.1. 内核提供了一个重要的结构体struct machine_desc ,这个结构体在内核移植中起到相当重要的作用,内核通过machine_desc结构体来控制系统体系架构相关部分的初始化 2.1. 静态映射表与machine_desc关系。 2.1.1.
阅读全文
摘要:#include <linux/init.h> // __init __exit #include <linux/module.h> // module_init module_exit #include <mach/regs-gpio.h> #include <mach/gpio-bank.h>
阅读全文
摘要:#include <linux/init.h> // __init __exit #include <linux/module.h> // module_init module_exit #include <mach/regs-gpio.h> #include <mach/gpio-bank.h>
阅读全文
摘要:一.驱动模型包含什么? 1.1. 类class 1.1.2. 它能够自动创建/dev下的设备节点,不需要mknod /dev/xxx c x x创建。当然class还有其另外的作用,且自动创建设备节点的还有udev系统,udev是处于用户空间的,其自动创建设备节点也是依赖于sysfs文件系统中提供的
阅读全文
摘要:一. platform 组织架构 1.1. platform工作体系都定义在drivers/base/platform.c中 1.2. platform相关函数声明在include/linux/platform_device.h 1.3. platform.c中两个重要结构体 1.3.1. plat
阅读全文
摘要:一. misc类设备简介 1.1. 什么是misc设备 1.1.1. misc中文名就是杂项设备\杂散设备,因为现在的硬件设备多种多样,有好些设备不好对他们进行一个单独的分类,所以就将这些设备全部归属于杂散设备,也就是misc设备,例如像adc、buzzer等这些设备一般都归属于misc中 1.1.
阅读全文
摘要:#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/mman.h> #include <linux/fb.h> #define FB_DEV "/dev/fb
阅读全文
摘要:一.设备驱动相关文件 1.1. 驱动框架相关文件 1.1.1. drivers/video/fbmem.c a. 创建graphics类、注册FB的字符设备驱动 fbmem_init(void) { proc_create("fb", 0, NULL, &fb_proc_fops); if (reg
阅读全文
摘要:一、什么是input输入子系统? 1.1. Linux系统支持的输入设备繁多,例如键盘、鼠标、触摸屏、手柄或者是一些输入设备像体感输入等等,Linux系统是如何管理如此之多的不同类型、不同原理、不同的输入信息的输入设备的呢?其实就是通过input输入子系统这套软件体系来完成的。从整体上来说,inpu
阅读全文
摘要:一. 指令和伪指令 1.1. 指令 a. (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由CPU读取执行。 1.2. 伪指令 b. (汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机
阅读全文
摘要:一. ARM的基本设定 1.1. ARM 采用的是32位架构 1.2. ARM约定: a. Byte : 8 bits b. Halfword :16 bits (2 byte) c. Word : 32 bits (4 byte) 1.3. 大部分ARM core 提供: a. ARM 指令集(3
阅读全文
摘要:一.CPU从指令集角度分类 1.1. CISC (X86) 1.1. 1. CISC CPU 指complex instruction set computer复杂指令集CPU 1.1.2. CISC体系的设计理念: a. 是用最少的指令来完成任务(譬如计算乘法只需要一条MUL指令即可),因此CIS
阅读全文
摘要:一. linux为什么需要临界段,信号量,互斥锁,自旋锁,原子操作? 1.1. linux内核后期版本是支持多核CPU以及抢占式调度。这里就存在一个并发,竞争状态(简称竟态)。 1.2. 竞态条件 发生在两个或更多线程操纵一个共享数据项时,在多处理器(MP)计算机中也存在并发,其中每个处理器中共享相
阅读全文
摘要:一.linux中断处理为什么要分为上下部 1.1. 中断处理的上半部(top half,又叫顶半部)和处理的下半部(bottom half,又叫底半部) 1.1. linux中断处理不参与调度,故中断处理时间过长会影响实时性 1.2. ISR运行时间尽可能短,但有些处理没有部分很短处理完,于是lin
阅读全文
摘要:一. 什么是块设备、 1.1. 一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性读到缓冲区。可以随机访问,块设备的访问位置必须能够在介质的不同区间前后移动 1.2. 块设备与字符设备差异 1.2.1. 块和
阅读全文

浙公网安备 33010602011771号