自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (5)
  • 收藏
  • 关注

原创 GCC编译WARNING解决:"extra tokens at end of #ifndef directive" tags: GCC,WARNING

近日,检查项目中的所有的WARNING,发现了一个有趣的WARNING: “extra tokens at end of #ifndef directive”。从字面上来看是"在#ifndef后面有无效的指令"。私下里写了小程序验证,发现有两种情况可以产生这个WARNING。程序1:// directive_1.c#include <stdio.h>

2018-10-26 16:03:29 24524

原创 用测试驱动开发的思路重构ADC LINUX驱动(一)

用测试驱动开发的思路重构ADC LINUX驱动(一)前言测试驱动开发(TDD)是上个世纪末开始流行的一种敏捷开发模式。在大型的互联网应用或者知名IT公司中有不少拥趸,而本人在开发嵌入式代码的时候,从来没有实践或者使用TDD。从本人躺过的无数个坑里面,深感如果单元测试覆盖率高,或者用TDD的方式开发,或许会少很多低级的、逻辑上的、甚至是很多高级的错误。国外有一本关于嵌入式TDD的教材...

2018-04-16 16:04:09 702

原创 linux uart 应用编程大坑--tty默认工作模式收不到数据

1 概述linux串口编程说起来很简单,但是新手往往容易掉进一个坑里面。明明驱动程序写的没有问题,且通过应用程序发送数据,能够在串口助手上收到。但是串口助手给单板发数据,运行在单板的应用程序却收不到数据。就跟我们有时候打电话,一边可以听到声音,但是另一边听不到对方说话。就好像打电话信号不好,这还要怎么交流啊。新手往往重点关注的地方是UART寄存器配置的对不对,GPIO复用对不对。好...

2018-03-01 16:17:46 3506

原创 souceinsight 4.0将tab键变为4个空格

Options -> File Type Options -> 单击左侧”C/C++ Source File” -> “Editing Options” 区域选中”Expand Tab to spaces”。Tab width: 4

2018-02-28 13:22:10 679

原创 source insight 4.0保存去空格 回车不过度缩进

1. 保存去空格Preference -- > file -> save file --> removing extra white space when saving2.回车过度缩进File type option -> Auto Indent -> Auto Indent type -> Simple.

2017-12-22 15:41:05 3653

原创 source insight 4.0 单击变量或者函数高亮引用

source insight 有一个比较好的功能是,单击某变量或者函数的时候,自动高亮显示,如下图:设置的方法是:Options ---> File Type Options ---> 勾选 "Highlight references to selected symbol"。

2017-07-21 09:42:20 21025 15

原创 C语言结构体声明的妙用,隐藏结构体内部信息

测试环境: vs20081. 前言C语言是一个比较底层的语言,似乎没有c++,java高级语言中对成员变量的保护,例如加上private修饰。但其实C语言也可以通过结构体的声明达到类型的效果。

2017-06-19 22:33:46 6088 2

原创 C语言中柔性数组的用法

测试环境:vs20081. 前言柔性数组是成员数为0的数组,单独并不可用。如果强行定义一个,编译器会报错。譬如,定义 int a[0];编译后会出现错误:error C2466: cannot allocate an array of constant size 0。上面错误的意思是不能够分配一个长度为零的数组。柔性数组只能做为结构体的最后一个成员,例如:typ

2017-06-15 22:35:28 943

原创 linux dup dup2刍议

先来点废话...久闻dup dup2是复制文件描述符的,但是其用法和存在的意义,一直没有细究。但从其字面上的意思来说,赋值文件描述符,这个功能似乎太鸡肋,一个文件描述符不过是一个整形数字,直接拿来用不就可以了么,犯得着来一个"复制文件描述符"?抱着疑问,一探究竟。

2017-06-14 23:26:22 385

原创 source insight 4.0 显示TAB和空格

以前习惯了用source insight 3.0,换了4.0后想显示空格和TAB键。发现在界面和设置上和3.0已经有了不小的差距。一顿好找后,终于找到了:View --> Visible Tabs and spaces。把“ Visible Tabs and spaces”勾选上就行了。

2017-06-03 09:00:49 18215

原创 Pro_6_UNIX下TCP回射服务与客户程序优化版_2016_08_17

当子进程结束的时候,内核会发送SIGCHLD信号给它的父进程。父进程会根据这个SIGCHLD来回收进程的资源。当父进程不回收资源的时候,就会产生僵尸进程。这显然不符合我们的编程规范,因为僵尸进程会占用系统资源。 规范的编程思路是每一个fork函数都应有一个wait或者waitpid函数和它对应。wait或者waitpid函数就是系统用于回收结束的子进程资源。 tcpcliecho.c/

2016-08-18 00:03:19 407

原创 Pro_5_UNIX下TCP回射服务与客户程序_2016_08_15

这里回射的意思类似于linux下的回显命令,当我们在控制台下echo hello的时候,屏幕就会显示hello。回射也是这个意思,当我们运行程序后在控制台下输入一串字符串回车,则显示该字符串。 具体实现的方案是运行服务程序后,再运行客户程序,在客户程序的控制台下输入字符串,客户程序将读到的从标准输入来的字符串发送给服务器。服务器收到这串字符,再返回给客户端。这个过程很想打乒乓球。不像之前的最简

2016-08-15 23:21:37 328

原创 Pro_4_UNIX下高效readline函数的实现_2016_08_10

readline.c#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <errno.h>#include <stdlib.h>#include <string.h>/* * 抄自《UNIX网络编程:卷1》, 稍作修改。 * 仅仅用于学习目的。学无止境,进步每一天。 * * slickedit编辑。

2016-08-11 07:35:14 338

原创 Pro_3_UNIX下read_write输入输出的字节数不足的问题

readline.c/* * 抄自《UNIX网络编程:卷1》, 稍作修改。 * 仅仅用于学习目的。学无止境,进步每一天。 * * slickedit编辑。 * * [email protected] * */#include <stdio.h>#include <unistd.h>#include <errno.h>#include <stdlib.h>ssiz

2016-08-09 07:46:11 454

原创 Pro_2_UNIX下大小端字节序探究

/* * 抄自《UNIX网络编程:卷1》, 稍作修改。 * 仅仅用于学习目的。学无止境,进步每一天。 * * slickedit编辑。 * * [email protected] * */#include #include intmain(int argc, char **argv){ union { short s;

2016-08-07 16:04:04 465

翻译 Pro_1_UNIX下最简单的C_S程序_2016_8_5

service:/* * 抄自《UNIX网络编程:卷1》 ,稍作改编。 * 仅仅用于学习目的 * * slickedit编辑。 * * [email protected] * */#include #include /* exit */ #include /* bzero */#include /* read */#include /* s

2016-08-07 13:19:02 647

原创 frescale imx6 gpioGPIO管理设计规范

1. 概论freescale imx6平台的GPIO是多映射的,很多GPIO可以被复用成多种外设,同时又有多个GPIO端口可以映射成同一功能口,这是一种网状的映射。每当imx6有新的硬件出来后,大部分的外设重新分配了下,GPIO配置很不好管理。经常有GPIO冲突的现象,造成一些难以察觉到的错误。2.设计思路性能要求:方便性,在booter中一次性配好,kernel直接利用这

2016-04-27 18:37:22 4360

原创 linux环境下实用小工具,从编译的C文件中,找出指定的函数或者其他字符串

最近在写代码的时候,需要更改SDK中的函数mxc_iomux_v3_setup_pad,在linux kernel中多次用到了这个函数,且SDK中frescale imx的姊妹平台很多,很多没有用到的c文件都用到了这个函数。在改之前为了评估工作量,看看总共有多少有效的地方引用了该函数,就写了一个小的shell脚本来实现这个功能。脚本内容:tools_to_find_func.sh#

2016-04-27 18:20:45 973

原创 freescale imx6 linux gpio中断驱动

今天上班写了个小代码,用于检测掉电处理。当主控CPU的GPIO_7_11被拉低的时候,则触发中断,表明发生了外部掉电事件。其原理图如下:一个三极管,左边是一个外部信号,当POW_SW为高的时候,表明IMX CPU外部供电断开了。此时PMIC自动切换到电池供电。就这个NPN型的三极管而言,POW_SW高,三极管的基极高,基极和发射极导通,集电极和发射极也导通,IMX端GPIO_7

2016-04-22 19:09:48 7135

转载 转载

skywang12345导航博客园首页新随笔联系订阅管理2016年4月>日一二三四五六27282930311234567891011121314151617

2016-04-13 18:31:09 705

原创 imx6 android4.4.2内核sd卡platform_device注册加载原理

单板环境:linux内核:3.0.8安卓:4.4.2作者:[email protected].概述此版飞思卡尔imx6SDK的内核是3.0.8还没有引入设备树,所以还是传统的platform_device和platform_driver方式进行注册和驱动加载的。2.platform_device的 注册入口点arch/arm/mach-mx6/boa

2016-04-08 17:58:15 1705

原创 Qt学习笔记

前段时间连续学了一个半月的Qt,学习的过程中做了笔记,以方便自己以后用的时候查看关键点。将之放到网盘上,以供需要的朋友。 QCheckbox QLineEdit QComboBox QToolButton QLabel 字符集 QString QDailog QFileDailog QTimerEven QThread多线程 容器类 自定义控件 http://pan.baidu.com/s/1c2pwN8s

2016-04-07 21:50:01 1046

原创 imx6 KGDB调试方法总结(光谷王凯的博客)

1,平台环境PC:ubuntu12.04单板:imx6(android4.4.2)2,imx6的kernel编译加gdb调试make menuconfig,然后按照Kernelhacking--&gt;KGDB: kernel debugger--&gt;KGDB: use kgdb over theserial console来配置内核。编译kernel。编译完成后在内核源码下面会有一个vmli...

2016-04-07 11:50:26 2447 2

原创 linux socket 网络进程间通信 (光谷王凯的博客)

服务端:1,创建fd /* * socket(int domain, int type, int protocol) * domain: * AF_INET: IPv4 * AF_INET6:IPv6 * type: * SOCK_DGRAM: if protocol = 0, mains UDP protoco

2016-04-05 20:29:26 678

原创 UBOOT代码调试万能模版-C++模版小试牛刀 王凯(光谷)

1. 概述UBOOT的代码有其特殊性,如果没有仿真器,难以方便的调试。一般用printf来调试很方便,可是难以将代码的各个逻辑都走到。就笔者个人的经验而言,BUG的出现往往是那些没有注意的逻辑流程出问题,所以代码写好后,每一行都过一遍十分重要。不要想当然的以为,“这个else的情况不可能出现”,或者自以为“这么简单的代码,一定没有问题”。防患于未然才是王道,等到项目快结束的时候,一个难以察觉的

2016-02-25 16:13:18 956

PCA9548 I2C SWITCH芯片调试总结

PCA9548是一个I2C SWITCH芯片。 如果片上系统不够用,则需要通过I2C SWITCH芯片扩充。

2018-01-25

imx6 linux串口虚拟层设计

LINUX串口驱动是一个常用的驱动,一般官方SDK已经提供一套完整的方案。但是就特殊的情况而言,有时候,一个物理串口需要被不同外部设备打开,此时需要串口虚拟到不同的虚拟串口设备上。

2016-04-22

IMX6启动方式总结。

IMX6 CPU启动阶段总结,重点分析boot0 boot1模式的选择,以及efuse启动优点。

2016-01-28

USB转网口.doc

LINUX操作系统下,在嵌入式开发过程中,有的时候没有网口,可以实现用USB来转接成网络口。

2016-01-28

空空如也

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

TA关注的人

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