<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mikedadong的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mikedadong</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mikedadong]]></copyright><item><title><![CDATA[dump-a-linux-processs-memory-to-file]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/109547365</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/109547365</guid><author>mikedadong</author><pubDate>Sat, 07 Nov 2020 15:10:00 +0800</pubDate><description><![CDATA[https://serverfault.com/questions/173999/dump-a-linux-processs-memory-to-file

]]></description><category></category></item><item><title><![CDATA[/ # ./i2cdetect -l ./i2cdetect: line 1: syntax error: end of file unexpected]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/104760444</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/104760444</guid><author>mikedadong</author><pubDate>Mon, 09 Mar 2020 20:27:53 +0800</pubDate><description><![CDATA[1.确认工具链是否正确。
2.确实是否缺少动态库。

]]></description><category></category></item><item><title><![CDATA[u-boot201707调试LS1046CPU的板子时串口无打印]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/104583881</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/104583881</guid><author>mikedadong</author><pubDate>Sat, 29 Feb 2020 22:31:23 +0800</pubDate><description><![CDATA[将SFUQ（1046CPU）的boot从C600分支（2017 11） 移入到uniboot分支（src2017 07）中，移植内容主要增加了SFUQ的私有驱动， 目前，已经可以编译出u-boot.bin,移植过程中主要解决了一些未定义、重定义的变量和函数。
上板子调试后，发现串口没有任何输出，通过点灯发现，init_sequence_f中的如下串口初始化相关函数已经走完了。
init_baud_...]]></description><category></category></item><item><title><![CDATA[linux中断初始化]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/104432614</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/104432614</guid><author>mikedadong</author><pubDate>Fri, 21 Feb 2020 18:38:56 +0800</pubDate><description><![CDATA[Load address: 0x91100000
Loading: #################################################################
#################################################################
##################################...]]></description><category></category></item><item><title><![CDATA[常用linux命令]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/103585724</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/103585724</guid><author>mikedadong</author><pubDate>Tue, 17 Dec 2019 18:53:36 +0800</pubDate><description><![CDATA[这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
sed -i...]]></description><category></category></item><item><title><![CDATA[内核驱动和设备匹配函数platform_match(struct device *dev, struct device_driver *drv) 解析]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/103081388</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/103081388</guid><author>mikedadong</author><pubDate>Fri, 15 Nov 2019 10:57:06 +0800</pubDate><description><![CDATA[##驱动和设备如何配对？
无论是向内核注册设备还是驱动，最终均会出发一个设备和驱动配对的过程，今天把这个如何配对的过程详细的解析下：
###背景
遇到了一个问题，内核启动到usb初始化控制器时，单板卡死，触发了3秒看门狗复位了。修改代码关闭看门狗，重启之后，依然卡死，但时不会重启了。怀疑是ubs控制器初始化失败，影响到了时钟中断。这里具体不讲解这个故障，在解决这个故障的时候，发现dts中并没有和u...]]></description><category></category></item><item><title><![CDATA[makefile、shell：检查字符串变量是否位于列表中（GNU-make check if element exists in list/array）]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/102508333</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/102508333</guid><author>mikedadong</author><pubDate>Fri, 11 Oct 2019 19:20:20 +0800</pubDate><description><![CDATA[字符串是否存在于列表中
工作需要，需要在shell脚本中对各种开发板进行区分，起初使用if else这种方式，虽然能解决问题，但是许多有共性的单板也被分开了，其实处理流程是一样的。所以，想了半天，想通过查找单板名字字符串是否位于一个列表的方式实现。找了网上的教程，并不是特别多，所以将自己的解决办法总结下。

shell脚本
#!/bin/bash
list="aaa bbb ccc ddd eee...]]></description><category></category></item><item><title><![CDATA[伸缩数组的错误用法，对于伸缩数组成员，一定要malloc内存。]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/102217904</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/102217904</guid><author>mikedadong</author><pubDate>Sun, 06 Oct 2019 11:33:45 +0800</pubDate><description><![CDATA[##伸缩数组的错误性用法
之前学习和应用数组时，在声明数组变量时，长度都是固定的，无法动态的定义数组的长度。
如下：
int max[];  //错误编译失败。

今天在阅读一份代码时，发现使用了伸缩数组，C99标准已经支持了变长数组。如下例子：
struct ipmi_loop_req_info {  
        uint8_t resv;   /* always 0 */
       ...]]></description><category></category></item><item><title><![CDATA[i2c设备rtc时钟芯片8581的初始化]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/100161066</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/100161066</guid><author>mikedadong</author><pubDate>Fri, 30 Aug 2019 16:13:31 +0800</pubDate><description><![CDATA[i2c从设备rtc时钟设备的初始化：
[    4.075355] Call trace:
[    4.075365] [&lt;ffff00000808aae8&gt;] dump_backtrace+0x0/0x270
[    4.075368] [&lt;ffff00000808af6c&gt;] show_stack+0x24/0x30
[    4.075373] [&lt;ffff...]]></description><category></category></item><item><title><![CDATA[ethtool网路工具内核解析流程]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/100112051</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/100112051</guid><author>mikedadong</author><pubDate>Wed, 28 Aug 2019 08:33:53 +0800</pubDate><description><![CDATA[##内核ethtool工具源码解析
###背景
用户态使用ethtool工具设置网口的模式（速率，双工，协商）时，发现设置的内容和读取的内容是不一
致的，以此问题为出发点，跟踪下内容ethtool的处理流程。
用户态设置网口模式的方法是 linux c通过socket打开网口，封装ethtool_cmd和ifreq结构体，然后ioctl逐步陷入内核中。
###用户态代码
struct ifreq ...]]></description><category></category></item><item><title><![CDATA[LS1046ACPU ARM架构点灯小程序]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/96990035</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/96990035</guid><author>mikedadong</author><pubDate>Tue, 23 Jul 2019 13:53:07 +0800</pubDate><description><![CDATA[#include &lt;stdint.h&gt;
#include &lt;stdio.h&gt;
#include &lt;sys/mman.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;arpa/inet.h&gt; 

#define ...]]></description><category></category></item><item><title><![CDATA[PCIE学习资料]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/96568236</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/96568236</guid><author>mikedadong</author><pubDate>Sat, 20 Jul 2019 10:16:26 +0800</pubDate><description><![CDATA[http://blog.chinaunix.net/uid-24148050-id-101021.html
Linux下的PCI总线驱动
PCI学习笔记
http://blog.youkuaiyun.com/weiqing1981127/article/details/8031541
Linux PCI网卡驱动的详细分析
http://soft.chinabyte.com/os/13/12304513.sht...]]></description><category></category></item><item><title><![CDATA[Linux Spi驱动子系统学习]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/90234358</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/90234358</guid><author>mikedadong</author><pubDate>Wed, 15 May 2019 13:39:23 +0800</pubDate><description><![CDATA[前几天学习了Linux的I2C驱动子系统，工作需要，今天再看下spi子系统，学习这些子系统，最重要的是一定要掌握到两个思想：
1.面相对象的思想，即驱动和设备的分离,便于驱动的移植，通过设备的硬件信息来实例化驱动。
2.软件开发的分层思想，比如I2C子系统将I2C适配器的功能与I2C具体设备的驱动分成两个层次来实现。这样的好处不言而喻，非常便于驱动的移植。降低了I2C设备开发人员的工作量。
当然，...]]></description><category></category></item><item><title><![CDATA[uboot-重定位、nand norflash启动]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/90025172</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/90025172</guid><author>mikedadong</author><pubDate>Thu, 09 May 2019 11:24:53 +0800</pubDate><description><![CDATA[##nand flash启动
cpu无法给nand flash发送指令，因此无法从nand flash中取指令的。那么上电后，为啥依然可以从nand flash中启动uboot呢？
1.硬件会自动将nand flash的代码前4K拷贝到SRAM（片内内存，steppintstone）中。CPU从SRAM的0地址中执行代码。如果uboot的代码大于4K怎么办？uboot中前4K的代码需要初始化nan...]]></description><category></category></item><item><title><![CDATA[Linux串口驱动阅读笔记]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/90023671</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/90023671</guid><author>mikedadong</author><pubDate>Thu, 09 May 2019 10:52:34 +0800</pubDate><description><![CDATA[sccv串口驱动学习–8250.c
本文主要记录学习CGEL3（基于Linux version 2.6.21.7） 中关于8250串口驱动代码的心得。代码位于Z:\CGEL3\archto\mips\sccv\drivers\serial
该驱动的代码采用最传统的方式来实现对串口的支持，在最新的CGEL6内核中，已经采用设备树的方法实现，将设备和驱动分离。
为了阅读的方便，打乱了常规驱动写法的顺序...]]></description><category></category></item><item><title><![CDATA[Linux I2C总线、驱动、设备知识点笔记]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/90023504</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/90023504</guid><author>mikedadong</author><pubDate>Thu, 09 May 2019 10:49:59 +0800</pubDate><description><![CDATA[##I2C
I2C驱动三部分：I2C核心、I2C总线驱动、I2C设备驱动
##I2C设备结构体 i2c-client初始化、加载流程
由于每个挂载在i2c总线上的设备均会有一个i2c-client结构体，但是一直没有搞清楚，这个设备对应的结构体是怎么来的？下载这篇文章给了几种i2c-client的初始化流程。可以洗洗琢磨下。
https://blog.youkuaiyun.com/lugandong/arti...]]></description><category></category></item><item><title><![CDATA[宏封装printf  打印出行号、函数名称]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/89890109</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/89890109</guid><author>mikedadong</author><pubDate>Mon, 06 May 2019 19:59:58 +0800</pubDate><description><![CDATA[#define print_warning(fmt, ...)	printf("warning@%s %d: "fmt,__FUNCTION__, __LINE__, ##__VA_ARGS__)
#define print_info(fmt, ...)	printf("info@%s %d: "fmt,__FUNCTION__, __LINE__, ##__VA_ARGS__)
#define ...]]></description><category></category></item><item><title><![CDATA[C++ const关键字的使用知识点总结]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/53420361</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/53420361</guid><author>mikedadong</author><pubDate>Thu, 01 Dec 2016 13:25:54 +0800</pubDate><description><![CDATA[const的使用const声明一个常量在C++中，有变量和常量之分，常量在程序运行中不允许被改变，主要有两种声明方式。
const关键字
    const double PI=10；//声明了一个PI常量,并定义为10
#define 关键字
    #define PI 3.1415  //声明了一个PI常量,并定义为10由于const声明的常量是有类型的，而#define没有，所以const更]]></description><category></category></item><item><title><![CDATA[win10的visual studio 2015 安装opencv3.1，并且编写demo人脸检测]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/53365106</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/53365106</guid><author>mikedadong</author><pubDate>Sun, 27 Nov 2016 16:19:25 +0800</pubDate><description><![CDATA[Face Detection Using OpenCVWhat is OpenCVOpenCV (Open Source Computer Vision) is released under a BSD license and hence it’s free for both academic and commercial use. It has C++, C, Python and Java in]]></description><category></category></item><item><title><![CDATA[多态：编译时的多态和运行时的多态]]></title><link>https://blog.youkuaiyun.com/mikedadong/article/details/53197370</link><guid>https://blog.youkuaiyun.com/mikedadong/article/details/53197370</guid><author>mikedadong</author><pubDate>Thu, 17 Nov 2016 11:07:16 +0800</pubDate><description><![CDATA[编译时的多态#include <iostream>
using namespace std;class B
{
public:
    void vf()
    {
        cout << "this is class B" << endl;
    }
};
class D :public B
{
public:
    void vf()
    {
        cout << "]]></description><category></category></item></channel></rss>