- 博客(216)
- 资源 (7)
- 收藏
- 关注
转载 C语言宏的高级应用 #与##作用
关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) do{ if (EXP) fprintf(stderr, "Warning: " #EXP ""); }
2014-05-29 14:49:45 840
原创 GDB远程调试(一)之DM8168下gdb远程调试环境的搭建
gdb是较为流行和通用的linux环境调试工具,掌握它对于嵌入式开发工作来说非常必要,能够提高工作效率,快速发现和解决问题。最近有兴趣研究了下gdb使用,特总结如下分享给大家。
2014-05-29 10:49:34 2024
转载 Classical 10 Examples for learning AWK
Classical 10 Examples for learning AWK作者:柳大·Poechant(钟超)邮箱:zhongchao.ustc#gmail.com(# -> @)博客:Blog.CSDN.net/Poechant日期:June 9th, 2012Example 1: Formatting Fields Into Columnscountries文件:
2014-05-26 09:29:35 984
转载 历届博客之星获奖博客分享
时间如水,岁月如歌,转眼间将走过2013年,这一年CSDN博客帮助无数人记录着自己的成长、分享经验心得、助力中国程序员一起进步前行。回顾2013,CSDN博客频道作为中国 IT行业最具影响力的博客平台,举办"2013年度博客之星"评选活动,为我们广大博主提供充分展示自我风采、发掘博客新星的机会。回顾我自己在CSDN上写博客(ithomer)的四年多时间,有幸
2014-05-23 09:29:59 976
原创 一个通用的编译模块Makefile,编译结果xxxx.ko
# If KERNELRELEASE is defined, we've been invoked from the# kernel build system and can use its language.ifneq ($(KERNELRELEASE),) obj-m := edmaDrv.o edmaDrv-objs := edma3_drv.o# O
2014-05-18 14:46:45 2141
原创 一个较为通用的linux工程目录架构和Makefile
1、前言 此工程目录虽然对于大型的工程来说还略显单薄,但是对于一些大项目前期的测试程序还是可以胜任的,故记录下来,以备以后查阅。2、目录结构图 用图片的形式来表示功能目录的架构,较为直观,不多废话直接上图:
2014-05-18 09:48:18 2005
原创 error: a label can only be part of a statement and a declaration is not a statement
在开发代码中使用switch出现的一个编译错误:error: a label can only be part of a statement and a declaration is not a statement代码如下所示
2014-05-15 16:27:30 1564
转载 davinci的DMA介绍
DM642中EDMA结构及优化DMA(Direct Memory Access)是DSP中至关重要的一个部分,DMA可以在不需要CPU的干预的情况下,在后台执行数据的高速传输,系统效率的高低很大程度上取决与DMA的使用好坏与否。DM642是目前公司内使用最多的DSP,其运行效率的高低决定着大部分产品的性能。下面就DM642上的DMA性能做一个简单的介绍和分析。DM642中的DMA称
2014-05-13 14:39:26 1531
转载 妈咪,我找到了!15个实用的Linux find命令示例
除了在一个目录结构下查找文件这种基本的操作,你还可以用find命令实现一些实用的操作,使你的命令行之旅更加简易。本文将介绍15种无论是于新手还是老鸟都非常有用的Linux find命令。首先,在你的home目录下面创建下面的空文件,来测试下面的find命令示例。123456789101112131415161718192
2014-05-07 10:20:58 1079
翻译 EDMA3的传输配置步骤,翻译自sprugx8b 5.7Setting Up a Transfer
1. 初始化一个DMA/QDMA通道l 确定通道类型:QDMA或DMA?l 通道映射I. 如果使用QDMA,编程QCHMAP:确定通道对应哪个参数集号和触发字II. 如果使用DMA通道,编程DCHMAP:确定通道对应哪个参数集号。l 如果通道使用阴影区域,确保DRAE/DRAEH配置合适,以便通过阴影区域寄存
2014-04-30 14:59:23 3945
转载 【编程好习惯】只暴露必要的变量和函数
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/277424在设计一个软件模块时,应当做到尽可能少地暴露只在模块内部使用的变量和函数,这可以通过使用static关键字做到。当一个内部变量或函数并没有被声明成static的话,那意味着所设计的模块存在“洞”。通过这些“洞”其它的模块可以窥视到模块的内部实现,或通过
2014-04-02 09:30:11 993
转载 【编程好习惯】屏蔽编程语言特性
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/228239定义数组是做软件开发经常需要用到的最基本的编程语言功能之一,下面示例了采用数组保存一个会话ID的一段简化代码。#define SESSION_ID_LEN_MIN 1#define SESSION_ID_LEN_MAX 256c
2014-03-31 11:48:41 918
转载 【编程好习惯】恰当使用goto语句
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/248828goto语句在C/C++语言中可谓是“臭名昭著”,乃至有的书(或公司的编程规范)提出禁用goto语句的说法。其结果就是,造成有的程序员一看到goto语句在某程序中被使用,就本能地认为这个程序写得很“垃圾”。此外,也使得有些程序员因为使用了goto语句而觉得
2014-03-31 11:46:43 999
转载 【编程好习惯】判断函数的返回值
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/258925调用一个函数后要检查函数的返回值,以决定程序是继续应用逻辑处理还是出错处理,这理应是一个常识,但在现实中,却存在大量不检查函数返回值的代码。既然是常识,但却得不到重视,这不能简单地说程序员不知道其危害性。相信读者也明白不检查函数的返回值其危害是什么,因此,
2014-03-31 11:41:37 1223
转载 嵌入式 内存泄漏检测工具valgrind以及mtrace
原文出处:http://blog.csdn.net/skdkjzz/article/details/21737081valgrind: valgrind --tool=memcheck --leak-check=full ./x86_joseph_qrcodeusagex86 平台先编译你自己的应用程序命令行:valgrind --log-file
2014-03-28 08:46:26 2146
转载 嵌入式 嵌入式工程师必备软件Valgrind
此文为转载,原文出处:http://blog.csdn.net/skdkjzz/article/details/217353711、修改下面代码(configure) armv7*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5$as_echo "ok (${host_cpu
2014-03-28 08:44:23 2640
转载 【编程好习惯】精确包含头文件
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/275313请注意这里用的是“精确”而不是“正确”,之所以不说正确,那是因为如果头文件没有被正确地包含的话,编译器是不会生成最终的目标代码的。那用精确一词想表达除正确之外的什么意思呢?包含两层意思。第一层意思是,只包含必需的头文件。图1是一个简单的示例程序,先
2014-03-26 10:01:36 709
转载 内存泄漏的防范和检测方法
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/170181在C/C++编程中内存泄漏是一个非常普遍和令人头痛的问题,这一问题在嵌入式系统中更为突出。那么如何采用一种好的方法来防范和检测内存泄漏呢?常用的做法有以下几种。 1)采用代码审查的方式进行控制。这种方法是最容易想到的,但是效果也是相当的有限的。当
2014-03-25 22:51:00 884
转载 【编程好习惯】复用代码以提高可维护性
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/263932代码复用在软件开发中存在两个层次。第一个层次是,在设计一个新的软件功能或是开发一个新的项目时,复用已存在的软件模块,这种复用或许称之为设计复用更好。另一个层次是,程序员在开发一个软件模块时,模块的内部应尽可能地复用。从编程习惯的角度来看,这里指的是后者。
2014-03-21 14:01:39 924
转载 【编程好习惯】合理运用静态全局或局部数组
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/247388这里的“合理运用”并不是指“使用全局数组都是合理的”,而是指在没有办法需要使用全局变量的情况下,或者使用全局数组能带来一定的好处时,可以酌情使用静态全局数组。使用静态全局数组的前提是,这一数组的拥有者(任务或模块)具有全局生命周期。所谓全局生命周期是指,其
2014-03-20 10:23:34 1427
转载 【编程好习惯】借助隐式初始化简化程序逻辑
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/271278在图1中示例了三个API的原型,分别是mprotector_init()、mprotector_fini()和mprotector_section_add()。假设mprotector_section_add()将会被多个任务调用以用于初始化各任务相关的一
2014-03-20 10:04:12 813
转载 【编程好习惯】减少搜索头文件的目录数
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/1250264假设存在下图所示的项目目录结构。如果存在如下包含头文件的代码,则大多的项目中需要通过“-I foo”和“-I bar”指明两个搜索头文件的目录。12foo.c#inclu
2014-03-20 09:57:19 770
转载 【编程好习惯】引入中间变量使程序更易读
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/859794今天查看自己为《专业嵌入式软件开发》一书所写的代码时发现,个别函数由于没有引入中间变量,使代码行既长又不易读。重构前后的代码如下所示。重构前:if (TIMER_STARTED == _handle->state_) { tim
2014-03-20 09:55:36 981
转载 【编程好习惯】使用空格增加可读性
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/172242对于下面的代码。void push_back(dll_node_t &_node){ dll_node_t *p_next; dll_node_t *_p_prev=tail_; if(_p_prev==0)
2014-03-19 19:19:36 1244
转载 【编程好习惯】判断失败而不是成功
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/172180先看下面一段代码。if (bbmt_physap_alarm_init () == RV_SUCC){ if (bbmt_trx_alarm_init () == RV_SUCC) { if (bbm
2014-03-19 19:15:52 868
转载 【编程好习惯】利用编程语言特性提高程序执行效率
本文出自 “至简李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/252954利用编程语言的特性不但能简化程序,而且还能提高程序的执行效率。先看一个使用sizeof()提高程序效率的例子程序,图1是没有使用sizeof()之前的代码,其背景信息需要在此做一个交代。其中,alarm_string变量是定义为长度是255的char数组,
2014-03-19 08:29:22 1130
原创 值得程序员仔细阅读思考的知名博客
至简李云 - 51CTO技术博客 - 领先的IT技术博客:http://yunli.blog.51cto.com/
2014-03-18 15:50:40 1227
转载 arm-none-linux-gnueabi,arm-none-eabi 与arm-eabi 区别
arm-none-linux-gnueabi链接工具命名: arch-vendor-(os-)abi1、arm-none-linux-gnueabi (ARM architecture, no vendor, linux OS, and the gnueabi ABI) 用于编译ARM架构的u-boot、linux内核、linux应用等2、arm-non
2014-03-11 23:29:18 11619 2
转载 Davinci的异构多核间通信基础组件SysLink
感谢原作者robin19890305的经验分享。=======================================================================================================转载请注明原文地址:http://blog.csdn.net/crushonme/article/details/10287693
2014-03-09 15:34:14 2689
转载 HDVPSS模块介绍及使用(DM81xx)
感谢原作者robin19890305的经验分享,正是有你这样无私奉献的人,科技才会不断发展。=======================================================================================================转载请注明原文地址:http://blog.csdn.net/crushonme/ar
2014-03-09 15:10:46 2705
转载 Netra(DM8168)基于Rdk平台的软件框架设计
感谢原作者robin19890305的经验分享。=======================================================================================================转载请注明原文地址:http://blog.csdn.net/crushonme/article/details/10245169
2014-03-09 15:04:18 3184
转载 DM8168 HDVPSS中的显示输出
原文地址:http://blog.csdn.net/shanghaiqianlun/article/details/12950583感谢原作者分享经验。DM8168HDVPSS中的显示输出文章作者:上海凯视力成信息科技有限公司转载请注明出处概述图1 显示框图 从图1中我们可以发现有3个高清视频编码器(HD
2014-03-09 15:01:23 1641
转载 mmap函数共享内存的理解
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域
2014-03-07 16:23:55 1338
转载 测试linux下 fprintf fwrite write mmap 等写文件的速度
/***************************************************************** 说明: 用不同的方法,测试写文件的速度,测试结果表明* 改变COUNT的值,将改变写入文件的大小* 测试CPU使用率方法: /usr/bin/time -f "CPU: %P" ./a.out 1 * ***********
2014-03-07 16:21:32 2523
转载 内核kernel以及根文件系统rootfs是如何映射到对应的nand flash的
http://blog.csdn.net/maopig/article/details/8303041初始化代码读取uboot到内存里面,然后跳转到uboot那里去执行uboot,uboot初始化必要的硬件,加载一些驱动,其中包括nand flash的驱动,然后根据uboot里面设置的一个启动命令TAG: NAND rootfs Flash 【系统启动
2014-02-28 16:03:38 1369
原创 PCIe学习笔记分享
1、概述 本总结随着DM8168中PCIe的学习,以及PCIe原理的学习而添加,都是一些零碎的知识点,有部分个人理解,将来温故知新用。《PCI Express 体系结构导读》,《PCI EXpress系统体系结构标准教材》DM8168相关文档,网上搜集资料。2、DM8168的PCIe总线欠奉。3、RC(Root Complex) RC的主要功能与PCI总线中的H
2014-02-26 11:39:38 39753
转载 Linux下PCI设备驱动程序开发
原文地址:http://www.ibm.com/developerworks/cn/linux/l-pci/Linux下PCI设备驱动程序开发PCI是一种广泛采用的总线标准,它提供了许多优于其它总线标准(如EISA)的新特性,目前已经成为计算机系统中应用最为广泛,并且最为通用的总线标准。Linux的内核能较好地支持PCI总线,本文以Intel 386体系结构为主
2014-02-26 11:13:44 2824
转载 Linux内核中_IO,_IOR,_IOW,_IOWR宏的用法与解析
原文出处:http://blog.csdn.net/hzn407487204/article/details/7995041在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域: bit31~bit30 2位为 “区别读写” 区,作用
2014-02-24 11:05:15 4398
IECISO17025-2017.pdf
2019-06-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人