<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[a619861986的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/a619861986</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a619861986]]></copyright><item><title><![CDATA[嵌入式开发知识点总结]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924312</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924312</guid><author>a619861986</author><pubDate>Tue, 01 Oct 2019 23:06:00 +0800</pubDate><description><![CDATA[offsetof和container_of宏
offsetof宏的作用：计算结构体中某个元素相对结构体首地址的偏移量
container_of宏的作用：知道结构体变量中某个成员的指针，反推这个结构体变量的指针

#include &lt;stdio.h&gt;
#define offsetof(type,member) ((int) &amp;((type *)0)-&gt;m...]]></description><category></category></item><item><title><![CDATA[嵌入式C语言面试必备]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924307</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924307</guid><author>a619861986</author><pubDate>Wed, 11 Sep 2019 13:28:00 +0800</pubDate><description><![CDATA[const关键词与指针
const意味着只读。修饰指针的三种形式：

　　int const *p 等价于const int *p 　　　　　　--------指针的指向（p）可改，但是指针指向的内容（*p）不可改；
　　int *const p              　　　　　　 ---------a刚好与上面相反：（*p）可改，（p）不可改...]]></description><category></category></item><item><title><![CDATA[注册字符设备接口]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924311</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924311</guid><author>a619861986</author><pubDate>Sun, 30 Jun 2019 15:07:00 +0800</pubDate><description><![CDATA[老接口：register_chrdev//注册设备驱动(实现注册设备号和相应的file_operation操作结构体)//缺点：只有自定义设置主设备号，无法指定次设备号新接口：register_chrdev_region(注册设备号)/alloc_chrdev_region(自动分配设备号) + cdev
cdev结构体及相关函数（每一个驱动文件，都有一个它私有的cdev结构体，来建立...]]></description><category></category></item><item><title><![CDATA[虚拟地址映射机制--动态、静态]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924308</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924308</guid><author>a619861986</author><pubDate>Sun, 30 Jun 2019 10:36:00 +0800</pubDate><description><![CDATA[静态映射：内核移植时，以代码的形式硬编码，如果需要更改，必须改源码并重新编译内核在内核启动时建立静态映射表，到内核关闭时销毁。除非更改并重新编译，否则只要内核启动，静态映射表就一直存在且不发生变化
静态映射表的建立过程(1)映射表描述。	linux/arch/arm/plat-s5p/cpu.c中的s5p_iodesc[]结构体数组(2)映射表建立函数。该函数负责根据(1)中的映射表...]]></description><category></category></item><item><title><![CDATA[Linux操作命令]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924306</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924306</guid><author>a619861986</author><pubDate>Wed, 26 Jun 2019 22:34:00 +0800</pubDate><description><![CDATA[常用的模块操作命令：
查看当前设备节点：ls /dev
查看设备号占用情况：cat /proc/devices
lsmod: list of module（打印当前内核中已安装的模块列表）modinfo:			打印出一个内核模块的自带信息 （modinfo    ***.ko）insmod/rmmod:	install /remove module加载/拆卸模块（insmod/rm...]]></description><category></category></item><item><title><![CDATA[字符设备驱动（1）驱动代码完整源码：charButtons.c]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924304</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924304</guid><author>a619861986</author><pubDate>Wed, 26 Jun 2019 22:12:00 +0800</pubDate><description><![CDATA[内核版本：Linux3.0.8
开发板：基于三星S5PV210处理器的Tiny210开发板
驱动名称：charButtons.c
驱动描述：按键触发中断，中断处理程序执行相应的简单LED点亮操作
方案1注册字符设备使用新的接口实现（需要好几个函数来实现。貌似更复杂）
方案2注册字符设备使用老的接口实现（貌似老接口更简单）


/**********************...]]></description><category></category></item><item><title><![CDATA[字符设备驱动（1）代码分析---之register_chrdev]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924303</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924303</guid><author>a619861986</author><pubDate>Wed, 26 Jun 2019 21:55:00 +0800</pubDate><description><![CDATA[/*****************************************************************************
简    述：简单字符型驱动程序，手动静态分配设备号，手动创建设备节点
************************************************************************...]]></description><category></category></item><item><title><![CDATA[字符设备驱动（1）代码分析---之gpio_get_value]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924302</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924302</guid><author>a619861986</author><pubDate>Wed, 26 Jun 2019 21:44:00 +0800</pubDate><description><![CDATA[在中断处理函数中，调用gpio_get_value/gpio_set_value（）函数来获取/设置gpio端口的值，在这里简单分析一下内核的实现流程。

tmp = gpio_get_value(S5PV210_GPH2(0));
#define gpio_get_value    __gpio_get_value
int __gpio_get_value(unsigned g...]]></description><category></category></item><item><title><![CDATA[字符设备驱动（1）代码分析---之request_irq]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924301</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924301</guid><author>a619861986</author><pubDate>Fri, 21 Jun 2019 12:49:00 +0800</pubDate><description><![CDATA[err = request_irq(irq, button_interrupt, IRQ_TYPE_EDGE_BOTH, 
            buttons[i].name, (void *)&amp;buttons[i]);
static inline int __must_check request_irq(unsigned int irq, 
        irq...]]></description><category></category></item><item><title><![CDATA[字符设备驱动（1）代码分析---之gpio_to_irq]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924300</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924300</guid><author>a619861986</author><pubDate>Thu, 20 Jun 2019 10:03:00 +0800</pubDate><description><![CDATA[/**************************************************************
gpio_to_irq(S5PV210_GPH2(0))
**************************************************************/
 4 #define gpio_to_irq      _...]]></description><category></category></item><item><title><![CDATA[Linux内核移植初探]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924338</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924338</guid><author>a619861986</author><pubDate>Sat, 11 May 2019 22:17:00 +0800</pubDate><description><![CDATA[内核移植的梯度：
初级：根据芯片公司的参考配置，编译开发板内核并了解执行过程
中极：添加内核驱动的方式方法
高级：修改或添加BSP包
linux内核特性：
可移植性强、支持的硬件平台广泛；超强的网络功能；多任务多用户系统；模块化的设计
五大子系统：
进程管理；内存管理；文件系统；网络协议；设备管理

内核获取路径：芯片厂商、内核源码官方
linux内核的目录结构层次结...]]></description><category></category></item><item><title><![CDATA[内核代码之container_of]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924336</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924336</guid><author>a619861986</author><pubDate>Tue, 07 May 2019 21:16:00 +0800</pubDate><description><![CDATA[1 /*****************************
 2  * container_of - cast a member of a structure out to the containing structure　　功能：通过结构体成员找到成员所属结构体的首地址
 3  * @ptr:    the pointer to the member.
 4  * @...]]></description><category></category></item><item><title><![CDATA[linux驱动动态与静态加载]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924334</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924334</guid><author>a619861986</author><pubDate>Sat, 13 Apr 2019 16:40:00 +0800</pubDate><description><![CDATA[在Linux中驱动的加载方式有动态加载和静态加载。动态加载，即驱动不添加到内核中，在内核启动完成后，仅在用到这一驱动时才会进行加载静态加载，驱动编译进内核中，随内核的启动而完成驱动的加载。添加字符驱动代码到内核的方式：1、在Linux-3.0.8/drivers/char/Kconfig中为charDev添加一个config条目，比如config TEST_CHAR2、修改Linux-3...]]></description><category></category></item><item><title><![CDATA[网络文件系统nfs在ubuntu16.04的安装]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924332</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924332</guid><author>a619861986</author><pubDate>Fri, 29 Mar 2019 16:28:00 +0800</pubDate><description><![CDATA[1、搜索nfs-sudo apt-cache search nfs-
2、安装sudo apt-get install nfs-kernel-server
3、配置：/etc/exports

/home/binge/user/my_share/mini_busybox *(rw,sync,no_subtree_check)
# * :anybody can link nfs...]]></description><category></category></item><item><title><![CDATA[ubuntu16.04 64位安装tftp服务器]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924330</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924330</guid><author>a619861986</author><pubDate>Fri, 29 Mar 2019 13:03:00 +0800</pubDate><description><![CDATA[1、安装tftpd-hpa和xinetd　　sudo apt-get install tftpd-hpa xined2、针对64位操作系统安装openbsd-inetd　　apt-get install openbsd-inetd
3、创建/修改配置文件：/etc/xinetd.d/tftp /etc/default/tftpd-hpa


 1 {
 2     socke...]]></description><category></category></item><item><title><![CDATA[运用busybox构建最小根文件系统]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924333</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924333</guid><author>a619861986</author><pubDate>Thu, 28 Mar 2019 16:17:00 +0800</pubDate><description><![CDATA[平台：vmware下ubuntu14.04前期准备：安装交叉编译环境arm-linux-gcc-4.5.1;下载完成BusyBox 1.23.2一、busybox构建1、make menuconfig——&gt;裁剪定制构建选项 make defconfig注：menuconfig需要库支持（sudo apt-get install libncurses5-dev）2、配置busybox...]]></description><category></category></item><item><title><![CDATA[u-boot.2012.10makefile分析，良心博友汇总]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924328</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924328</guid><author>a619861986</author><pubDate>Thu, 14 Mar 2019 15:14:00 +0800</pubDate><description><![CDATA[声明：以下内容大部分来自网站博客文章，仅作学习之用1、uboot系列之-----顶层Makefile分析（一）1、u-boot.bin生成过程分析


2、make/makefile中的加号+，减号-和at号@的含义3、Makefile中wildcard的介绍4、makefile中"=" , ":=" , " : " 的区别 patsubst 以及addprefix5、Linux...]]></description><category></category></item><item><title><![CDATA[Linux内核启动参数]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924331</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924331</guid><author>a619861986</author><pubDate>Sun, 10 Mar 2019 21:57:00 +0800</pubDate><description><![CDATA[一、系统启动流程
bootloader(uboot)——linux Kernel(uImage)——Rootfs(Init)——Application
二、启动环境配置
uboot环境变量：printenv setenv saveenv tftpboot nand read/write baudrate 115200 bootdelaybootcmd bootargs.....]]></description><category></category></item><item><title><![CDATA[PC环境搭建——虚拟机配置双网卡]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924326</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924326</guid><author>a619861986</author><pubDate>Sun, 10 Mar 2019 20:02:00 +0800</pubDate><description><![CDATA[Vmware虚拟机三种网络模式详解
TCP/IP协议四层模型：



应用层


传输层


网络层


物理接口



桥接模式时，主机和虚拟机在同一个网段，之间可以相互访问
NAT模式时，主机和虚拟机不在同一网段，之间通过VMware Network Adapter VMnet8来实现主机和虚拟机的互访（主机网卡直接与虚拟NAT设备相连，然后虚拟...]]></description><category></category></item><item><title><![CDATA[嵌入式Linux系统移植（二）——交叉编译工具集]]></title><link>https://blog.youkuaiyun.com/a619861986/article/details/101924329</link><guid>https://blog.youkuaiyun.com/a619861986/article/details/101924329</guid><author>a619861986</author><pubDate>Sun, 10 Mar 2019 15:13:00 +0800</pubDate><description><![CDATA[常用工具：readelf、size、nm、strip、strings、objdump、objcopy、addr2line
readelf：读可执行文件的elf头


 1 ELF Header:
 2   Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
 3   Class:                 ...]]></description><category></category></item></channel></rss>