blogernice

导航

统计

文章分类 -  c语言

1 2 3 下一页

DSB,ISB,DMB指令
摘要:4.11.9. DBG、DMB、DSB 和 ISB 调试指令、数据内存屏障指令、数据同步屏障指令和指令同步屏障指令。 语法 DBG{cond} {#option} DMB{cond} {option} DSB{cond} {option} ISB{cond} {option} 其中: cond 是一 阅读全文

posted @ 2020-10-28 10:40 blogernice 编辑

ARM汇编文件的组成和汇编指令类型
摘要:ARM汇编文件的组成 指令:编译完成后作为一条指令(机器码)存储在内存单元中,CPU执行时能够完成处理的操作 伪指令:在编译时替换成能被识别的ARM指令 伪操作:知道编译器进行编译,编译完成后不生成指令,也不占用内存空间。 ARM汇编指令类型 数据处理指令 跳转指令:实现程序执行过程中的跳转 Loa 阅读全文

posted @ 2020-10-19 14:42 blogernice 编辑

Keil 中的Code,RO-data,RW-data,ZI-data
摘要:.hex文件中包含有实际代码的存储地址、帧长度、类型、校验等,而这些东西在你烧录程序时并不会烧录进单片机,这些东西只是为烧录软件指定程序要烧录进单片机的地址,以及保证要烧录数据的完整性。所以实际烧录进单片机的数据要远远小于.hex中的数据。比如,我的一个.hex的文件大小为52KB,我烧录进单片机, 阅读全文

posted @ 2020-06-23 09:35 blogernice 编辑

ARM-LINUX-GCC 编译选项介绍
摘要:我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为arm-linux-gcc。下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段: 1) 预处理(Pre-Processing) 2) 编译( 阅读全文

posted @ 2020-06-22 19:25 blogernice 编辑

C语言运算符优先级表
摘要:初级运算符( )、[ ]、->、. 高于 单目运算符 高于 算数运算符(先乘除后加减) 高于 关系运算符 高于 逻辑运算符(不包括!) 高于 条件运算符 高于 赋值运算符 高于 逗号运算符。 位运算符的优先级比较分散。 除了赋值运算符、条件运算符、单目运算符三类的平级运算符之间的结合顺序是从右至左, 阅读全文

posted @ 2020-06-18 09:51 blogernice 编辑

C编程之堆栈回溯
摘要:前言 在嵌入式系统C语言开发调试过程中,常会遇到各类异常情况。一般可按需添加打印信息,以便观察程序执行流或变量值是否异常。然而,打印操作会占用CPU时间,而且代码中添加过多打印信息时会显得很凌乱。此外,即使出错打印已非常详尽,但仍难以完全预防和处理段违例(Segment Violation)等错误。 阅读全文

posted @ 2020-06-04 09:28 blogernice 编辑

Linux下C实现读取文件夹下所有文件(包括子文件夹)的文件名
摘要:Linux C 下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下: #include <dirent.h> struct dirent { long d_ino; /* inode number 索引节点号 */ off_t d_off; /* 阅读全文

posted @ 2020-06-04 09:26 blogernice 编辑

Linux下C语言实现多线程文件复制
摘要:1、具体思路把一个文件分成N份,分别用N个线程copy,每个线程只读取指定长度字节大小的内容最后一个线程的源文件所指定的结束位置是文件的实际大小每个线程读取指定源文件部分的起始位置和结束位置的内容到缓冲区每个线程将缓存中的内容写入目的文件的指定开始位置和结束位置主线程必须等到所有线程copy完成后才 阅读全文

posted @ 2020-06-04 09:24 blogernice 编辑

C编程之错误处理
摘要:前言 本文主要总结嵌入式系统C语言编程中,主要的错误处理方式。文中涉及的代码运行环境如下: 一 错误概念 1.1 错误分类 从严重性而言,程序错误可分为致命性和非致命性两类。对于致命性错误,无法执行恢复动作,最多只能在用户屏幕上打印出错消息或将其写入日志文件,然后终止程序;而对于非致命性错误,多数本 阅读全文

posted @ 2020-06-04 09:23 blogernice 编辑

ini文件解析C库(iniparser)
摘要:一.交叉编译ini解析库 1.官方网站http://ndevilla.free.fr/iniparser 下载iniparser-3.1.tar.gz 2.解压 tar -zxvf iniparser-3.1.tar.gz cd tar -zxvf iniparser3.修改makefile CC 阅读全文

posted @ 2020-06-04 09:22 blogernice 编辑

DES和3DES加密算法C语言实现
摘要:DES和3DES加密算法C语言实现记录DES和3DES加密算法最简洁易懂的C语言源码主要是要用到CBC这部分的算法,后边也有一个工具可以提供验证,因为网上的工具含有CBC的很少,也方便大家吧 #define MBEDTLS_DES_ENCRYPT 1 #define MBEDTLS_DES_DECR 阅读全文

posted @ 2020-06-04 09:21 blogernice 编辑

linux kernel代码艺术,编译时断言
摘要:本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核代码复习一下C语言及汇编语言的语法,二来学习内核开发大牛们书写代码的风格及思路。 在内核文件 inc 阅读全文

posted @ 2020-06-04 09:16 blogernice 编辑

linux malloc函数的实现
摘要:很多学过C的人对malloc都不是很了解,知道使用malloc要加头文件,知道malloc是分配一块连续的内存,知道和free函数是一起用的。但是但是: 一部分人还是将:malloc当作系统所提供的或者是C的关键字,事实上:malloc只是C标准库中提供的一个普通函数 而且很多很多人都对malloc 阅读全文

posted @ 2020-06-04 09:14 blogernice 编辑

深入剖析变长参数函数的实现
摘要:什么是变长参数? 所谓含有变长参数的函数是指该函数可以接受可变数目的形参。例如我们都非常熟悉的 printf,scanf等等。 2:变长参数如何实现? 首先来看下面这样一个例子: #include<stdio.h>#include<stdarg.h>#include<string.h> void d 阅读全文

posted @ 2020-06-04 09:13 blogernice 编辑

Linux下检查内存泄漏的工具
摘要:概述 内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的、复杂的应用程序中,内存泄漏是常见的问题。当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,这时就出现了内存泄漏。尽管优秀的编程实践可以确保最少的泄漏,但是根据经验,当使用大量的 阅读全文

posted @ 2020-06-04 09:11 blogernice 编辑

C语言字节对齐 __align(),__attribute((aligned (n))),#pragma pack(n)
摘要:一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然 阅读全文

posted @ 2020-06-04 09:09 blogernice 编辑

__attribute__机制
摘要:GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__是用来设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__at 阅读全文

posted @ 2020-06-04 09:07 blogernice 编辑

Linux下C语言实现内存池
摘要:操作系统:ubuntu10.04前言: 在通信过程中,无法知道将会接收到的数据的长度,因此开一个固定大小的缓冲区并不合适,开大了,很可能大多数通信都只是几十个自己而已;开小了,又无法处理大数据。因此最好的方法就是创建内存池,根据实际情况,分配合适大小的内存空间。一,思路 通过双向链表,管理所有的内存 阅读全文

posted @ 2020-06-04 09:04 blogernice 编辑

Linux下实现多线程通信,环形缓冲区,可用于producer/consumer
摘要:操作系统:ubuntu10.04前言: 在嵌入式开发中,只要是带操作系统的,在其上开发产品应用,基本都需要用到多线程。 为了提高效率,尽可能的提高并发率。因此,线程之间的通信就是问题的核心。 根据当前产品需要,使用 环形缓冲区 解决。一,环形缓冲区的实现 1,cbuf.h 点击(此处)折叠或打开 # 阅读全文

posted @ 2020-06-04 09:02 blogernice 编辑

Linux下C语言实现的哈希链表
摘要:操作系统:ubuntu10.04前言: 在稍微大点的项目中,基本都会遇到算法问题,特别是大数据的查找。 在当前项目中,使用到了哈希链表。一,概述 实现思路:用数组保存哈希桶的关键信息,再用链表链接数据到对应的哈希桶中。 如:管理很多字符串。以a~z,?为哈希桶。 二,实现 1,结构 点击(此处)折叠 阅读全文

posted @ 2020-06-04 08:57 blogernice 编辑

1 2 3 下一页
点击右上角即可分享
微信分享提示