- 博客(50)
- 资源 (3)
- 收藏
- 关注
原创 写在2020最后一天
写在2020最后一天。90年人,今年刚好过30岁,古人说三十而立,看看自己,应该好好反思,这篇文章也算是一个小小的总结吧。13年毕业长沙一所普通二本,回头一看,毕业了7年半了,这七年多的时光中经历不算多,中规中矩,算一个标准的技术人走的路线,现在回头看看,顺便记录下来,怕自己那天忘记了。工作从大三开始,在2012年9月收到人生第一个offer的时候,还是个实习offer;不过这次工作让我的技术方向就大体确认了,所以IT人的第一份工作真的很重要;当初的心情是激动的。怀了对金钱的渴望,对工作的向往,
2020-12-31 19:15:45
202
转载 IAP 方式
IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信管道
2014-06-12 17:23:21
934
转载 大端模式与小端模式、网络字节顺序与主机字节顺序
http://wxxweb.blog.163.com/blog/static/135126900201022133740759/大端模式与小端模式一、概念及详解 在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式。 先回顾两个关键词,MSB和LSB: MSB:Most Significant
2014-05-28 14:56:44
728
转载 msp 430 低功耗
3.5 低功耗模式2013-09-26 15:40:09 我来说两句 收藏 我要投稿 本文所属图书 > MCU工程师炼成记:我和MSP430单片机本书总体上分为三部分。第一部分主要通过动手引导用户掌握MSP430单片机及其外设的使用。这部分主要由一些入门级的实验组成,让读者通过学习这些实验学会MSP430单片机的基本开发方式
2014-04-19 16:29:13
3934
1
原创 gdb远程调试arm+linux上的应用程序
对于嵌入式linux应用程序开发调试一般采用gdb+gdbserver的形式。具体步骤罗列如下:第一步:移植gdbserver到开发板1)首先查看安装在你linux上的arm-linux-gdb的版本,然后在http://ftp.gnu.org/gnu/gdb/上下载对应的gdb。如果arm-linux-gdb和gdbserver的版本不一致,在连接调试的时候会出现像如下信息Malfo
2013-07-22 11:52:23
3183
2
转载 男子气概
有一位父亲很为他的小孩苦恼,都已经十六岁了,一点男子气概都没有。有一天,他去拜访一位禅师,请求这位禅师帮他训练他的小孩。禅师说:“你把小孩留在我这边三个月,这三个月你不可以来看他。三个月后,我一定可以把你的小孩训练成一个真正的男人。” 三个月后,小孩的父亲来接小孩。 禅师安排了一场空手道比赛来向父亲展示这三个月的训练成果。被安排与小孩对打的是一位空手道教练。只见教练一出手,这小孩便应声倒地。但是小
2013-07-20 09:47:02
1436
原创 stm32编程配置一个I/O为EXTI中断的步骤
配置一个I/O为EXTI中断的步骤: GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; //1.使能EXTIx线的时钟和第二功能AFIO时钟 RCC_APB2PeriphClockCmd( RCC
2013-06-28 16:05:25
1524
原创 青春无悔
时光荏苒,一晃又是一个四年,现在依稀记得第一次这所校园的场景,现在马上就要走了,心中满是疑惑,这四年里,我在这所学校留下了什么。放肆的去回忆,试图去解开自己心中的疑惑,去寻找自己在学校留下的东西。 记得在高中的时候就在憧憬着大学的生活,那时大伙眼里的大学生活用好词形容是自由,用不好的词形容是堕落,但是我心中的大学是奋发与上进。在进入大学之前有个这样的小插曲,让我觉得我是一个在情感上是一个
2013-06-18 17:20:41
905
转载 C语言逗号运算符和逗号表达式
http://see.xidian.edu.cn/cpp/html/27.html在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。其一般形式为:表达式1,表达式2其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。【例3.19】main(){ int a=2,b=4,c=6,x,
2013-05-09 17:14:49
857
1
原创 RS485通信应注意的几点细节
RS485通信应注意的几点细节1. 关于控制位问题#define TX_485GPIO_SetBits(GPIOF,GPIO_Pin_11)#define RX_485GPIO_ResetBits(GPIOF,GPIO_Pin_11)是给控制位高电平为发送模式还是给低电平为发送模式,看电路原理图的时候一定要看清楚。改变控制位时应该有一定的时间延迟。2. 关于
2013-04-25 17:22:51
3462
原创 uboot main_loop()函数分析
main_loop()函数:1.#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0) s = getenv ("bootdelay");//取得延迟时间的环境参数 bootdelay = s ? (int)simple_strtol(s, NULL, 10) : CONFIG_BOOTDELAY; d
2013-04-15 09:14:24
1012
转载 C标准库的setlocale()用法笔记
C标准库的setlocale()用法笔记转自:http://zyxhome.org/wp/cc-prog-lang/c-stdlib-setlocale-usage-note/ [在此向原文作者说声谢谢!若有读者看到文章转载时请写该转载地址,不要写我的BLOG地址。尊重他人的劳动成果 ^_^ ]C 和 C++ 的标准库分别有自己的 locale 操作方法,C 标准库的locale
2013-04-11 17:46:48
1042
原创 linux shell 中iconv的用法
由于我的linux是移植在OK6410上的linux。没有iconv命令。libiconv-1.14.tar.gz下载地址:http://code.google.com/p/lnamp-web-server/downloads/detail?name=libiconv-1.14.tar.gz&can=2&q=解压缩交叉编译得到iconv可执行文件,以及文件运行所需要的库文件,将得到的库
2013-04-10 16:05:11
1954
转载 PDU短信的编码一般规则
http://www.cnblogs.com/nobileamir/archive/2010/11/11/nobile_amir.html目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用
2013-04-10 15:54:54
1077
转载 linux C程序中获取shell脚本输出
linux C程序中获取shell脚本输出1. 前言 2. 使用临时文件 3. 使用匿名管道 4. 使用popen 5. 小结 1. 前言Unix 界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个 ping程序来测试网络的连通性,实现ping函数需要写上
2013-04-10 15:52:40
926
原创 移植DM9000网卡驱动到uboot
1. 其实DM9000网卡驱动的移植已经有很多前辈做过了,网络上有很多可以参考的资料。通过两天的努力,终于把在移植上遇到的问题给解决了,顺利的给uboot添加了网络功能,在这里顺便做个记录。2. 我的开发板是OK6410,发现飞凌官网上提供的uboot源代码针对的是CS8900不是DM9000,我在他移植的uboot源代码的基础上加入了dm9000网卡驱动。1) 首
2013-01-30 17:29:07
810
原创 编译ARM平台的drcom
编译ARM平台的drcom交叉工具链:arm-linux-gcc-4.3.2目标板:ok6410,内核版本:3.0.11. http://sourceforge.net/project/showfiles.php?group_id=128089&package_id=234598&release_id=595674下载源代码2. 解压查看目录结构发现这个ma
2013-01-22 14:42:08
1117
转载 为arm平台构建linux内核树
http://www.cnblogs.com/Jezze/archive/2011/12/23/2299873.html前面说到要编写Linux 2.6的驱动,必须建立内核源码树,前面建立的源码树是针对i686平台的,但是我么嵌入式系统用的是arm平台,所以也要建立arm平台的内核源码树。首先下载与你嵌入式系统平台版本号一致的linux内核,我的版本为2.6.30. 第一步:先
2013-01-22 10:17:24
526
原创 samba服务器的简单配置
1. 检查是否已经装有samba。rpm –qa |grep samba2. 检测是否已经装有xinetd。rpm –qa |grep xinetd3. 配置/etc/samba/smb.conf加入[root] Comment= Root Directories Browseable= yes Writable= ye
2013-01-21 17:23:56
577
原创 linux2.6.18升级到3.0.1
今天将内核从2.6.18版本升级到了3.0.1版本。将具体的步骤记载下来1. 下载内核源代码http://www.kernel.org/pub/linux/kernel/v3.0/2. 解压:tar –jxvf linux-3.0.1.tar.bz23. 将源代码拷贝到/usr/src/,并创建连接文件ln –s linux-3.0.1 linux (不知
2013-01-21 17:21:30
653
原创 linux-3.0.1编译drcom-1.4.8.2.tar.gz错误解决
linux-3.0.1编译drcom-1.4.8.2.tar.gz错误解决 今天用linux(内核版本3.0.1)编译drcom-1.4.8.2.tar.gz时出现错误、错误说drcom.c里面sk_buff结构中找不到dst。查看了一下linux-3.0.1内核源代码,找到sk_buff结构,确实在里面找不到dst。但是找到unsigned long _skb_re
2013-01-21 17:20:28
1448
转载 signal_pending函数解析
经常我们在睡眠的代码中 会看到这样的例子: if (signal_pending(current)) { ret = -ERESTARTSYS; return ret; } 关于 -ERESTARTSYS 到底是什么意思? -ERESTARTSYS表示信号函数处理完毕后重新执行信号函数前的某个系统
2013-01-12 16:55:14
4075
转载 uboot do_bootm函数详解
先来引用一下这篇介绍“ARM Linux内核启动要求”的文章ARM Linux Kernel Boot Requirements,是ARM Linux内核的维护者Russell King写的。引用: * CPU register settings o r0 = 0. o r1 = machine type number.
2012-12-21 16:37:53
3138
转载 uboot main_loop()函数分析
转:http://hi.baidu.com/fjctspace/item/1580d90e16dada8102ce1be3main_loop()函数做的都是与具体平台无关的工作,主要包括初始化启动次数限制机制、设置软件版本号、打印启动信息、解析命令等。(1)设置启动次数有关参数。在进入main_loop()函数后,首先是根据配置加载已经保留的启动次数,并且根据配置判断是否超过启动次数。
2012-12-21 13:32:19
907
转载 __attribute__详解
From http://hi.baidu.com/cygnusnow/blog/item/8b82000f871fcf2f6159f3de.htmlhttp://blog.csdn.net/ruixj/article/details/4274721GNUC的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Functio
2012-12-21 10:34:59
614
转载 Kobject
最近研究Linux驱动开发,一直苦于一个词汇"内核对象",何为内核对象,现在就带大家一起来探讨一下Kobject是Linux2.6内核中引入的,用来表示驱动模型的核心对象机制:kobject将dentry(表示文件系统中的一个目录项)作为一个字段,这样就可以方便的kobject映射到一个dentry上,也就是说kobject与/sys下的任何一个目录或文件对应起来,形成与sysfs
2012-12-04 18:29:53
496
转载 Linux struct inode结构
*索引节点对象由inode结构体表示,定义文件在linux/fs.h中*/struct inode { struct hlist_node i_hash; /* 哈希表 */ struct list_head i_list; /* 索引节点链表 */ struct l
2012-12-04 18:28:46
688
转载 标准C的标记化结构初始化语法
http://www.cnblogs.com/wanghetao/archive/2012/05/28/2521525.html在标准C中(C89)结构标准初始化是用{}来实始化,在C99的版本,采用了采用可读性更强的标记化实始化,这在LINUX内核和驱动很为常见。这是ISO C99的用法C Primer Plus第五版中相关章节:已知一个结构,定义如下 struct book
2012-12-04 18:26:48
516
转载 linux内核定时器详解
Linux内核2.4版中去掉了老版本内核中的静态定时器机制,而只留下动态定时器。相应地在timer_bh()函数中也不再通 过run_old_timers()函数来运行老式的静态定时器。动态定时器与静态定时器这二个概念是相对于Linux内核定时器机 制的可扩展功能而言的,动态定时器是指内核的定时器队列是可以动态变化的,然而就定时器本身而言,二者并无本质的 区别。考虑到静态定时器机制的能
2012-12-04 18:24:57
935
原创 Mplayer移植到OK6410
Mplayer移植到ARM11(v6)步骤:1. 下载源代码MPlayer-1.0rc1.tar.bz22. 下载下载libmad包(libmad-0.15.1b.tar.gz);打开一个终端,进入libmad的目录,输入配置命令:./configure --enable-fpm=arm --host=arm-linux --disable-shared(这个选
2012-12-04 08:37:26
926
原创 dos的疑问
前两天网络学习的时候看到别人写的dos程序,话说可以攻击网络服务器,看了一下原理,大致是通过在TCP三次握手那里做了手脚。把网络上的那个程序copy下来,运行一下,攻击公司的内部服务器(没有反映啊,失落哈),不过出现一个很奇怪的现象。见下图哦!下面贴出在网络搜索的源代码:#include #include #include #include #include #include #i
2012-11-23 19:39:04
476
原创 网络编程学习小结
由于各种原因,要用到linux网络编程,于是就去找了一些资料加深一下对网络知识方面的理解。首先是网络模型:ISO模型:物理层->数据链路层->网络层->传输层->回话层->表示层->应用层。TCP/IP模型:网络接口层->网络互连层->传输层->应用层。这里我主要想理解理解tcp协议和udp协议。UDP协议 UDP协议是建立在IP协议基础之上的,用在传输层的协议.UDP和IP协议一样是不可
2012-11-23 19:21:07
446
原创 网络收音机streamtuner和xmms安装以及问题解决
由于在接下来的项目中可能需要做一个网络收音机(linux),上网查了一下资料,从网站上下载 了一个网络收音机的源代码:streamtuner-0.99.99.tar.gz,通过解压,vi INSTALL得到如下安装步骤:安装好之后敲入streamtuner启动软件,进入该软件的图形界面。如图: 点击播放的时候,出现无法打开xmms子进程,播放停止。网上搜索了一下,
2012-11-22 18:49:44
1454
转载 Linux网络收音机
收音机作为接收广播的工具,经过漫长的发展过程,由单波段发展到多波段,由电子管,晶体管发展到集成电路,由机械调谐发展到数字调谐功能等,其技术和品质都有了长足的进步。如今,在收音机这个家族中新的成员也在不断加入,如卫星广播接收机等。当社会进入网络时代后,更是出现了网络收音机这种跨越全球的信息接收设备。但是,目前这种网络收音机大多是通过基于PC机上的软件开发来实现的其功能的,也就是说这种网络收音
2012-11-21 15:32:47
4624
1
转载 linux网络编程
Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是我们的ftp
2012-11-21 14:59:50
546
转载 深入理解SetUID
原文载自《草根》杂志,下载地址:http://www.lampbrother.net/grassroots/ 在Linux系统中每个普通用户都可以更改自己的密码,这是合理的设置。问题是:用户的信息保存在文件/etc/passwd中,用户的密码保存在文件/etc/shadow中,也就是说用户更改自己密码时是修改了/etc/shadow文件中的加密密码,但是,LOOK——-rw-r--r-
2012-11-21 13:54:47
686
转载 CAN总线协议
一、什么是CAN总线?CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。一个由CAN 总线构成的单一网络中,理论上可以挂接无
2012-11-07 16:15:02
7414
原创 树<1>
最近做了看了些内核代码,感觉数据结构的知识还是不够,得加紧补习补习。typedef struct node *tree_pointer;struct node{ int data; tree_pointer left_child; tree_pointer right_child;};1.树的相关概念2.二叉树的前序,中序,后序遍历
2012-11-03 10:50:05
470
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人