
嵌入式Linux
文章平均质量分 77
Frankie_He
这个作者很懒,什么都没留下…
展开
-
&>/dev/null表示的意思
在Linux/Unix中,一般在屏幕上面看到的信息是从stdout (standard output) 或者 stderr (standard error output) 来的。许多人会问,output 就是 output,送到屏幕上不就得了,为什麼还要分成stdout 和 stderr 呢?那是因为通常在 server 的工作环境下,几乎所有的程序都是 run 在 background 的,所以...转载 2019-04-24 18:56:07 · 57884 阅读 · 7 评论 -
进程与线程的一个简单解释
From: https://www.cnblogs.com/dreamroute/p/5207813.html进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使...转载 2018-07-09 16:38:53 · 217 阅读 · 0 评论 -
unsigned char和signed char型变量的存储和表示
#include <stdio.h> int main(void) { signed char a = -1; unsigned char b = -1; printf("%%d:\n"); printf("%d\n", a); printf("%d\n", b); printf("\n%%u:\n");...转载 2018-07-09 15:06:25 · 5313 阅读 · 0 评论 -
[Linux C编程]linux下cat详解
转自:http://www.cnblogs.com/perfy/archive/2012/07/23/2605550.html简略版:cat主要有三大功能:1.一次显示整个文件。$ cat filename2.从键盘创建一个文件。$ cat > filename 只能创建新文件,不能编辑已有文件.3.将几个文件合并为一个文件: $cat file1 file2 > file参数...转载 2018-05-31 15:26:49 · 735 阅读 · 0 评论 -
linux驱动篇之 driver_register 过程分析(二)bus_add_driver
个人笔记,欢迎转载,请注明出处,共同分享 共同进步 http://blog.youkuaiyun.com/richard_liujh/article/details/48245715kernel版本3.10.141.概述本篇主要围绕driver_register中的第二步bus_add_driver展开分析。在上一篇博文中主要分析了driver_find的过程,在driver_register中调用drive...转载 2018-06-14 09:37:07 · 1800 阅读 · 0 评论 -
linux驱动注册过程分析--driver_register(一)
个人笔记,欢迎转载,请注明出处,共同分享 共同进步 http://blog.youkuaiyun.com/richard_liujh/article/details/45825333kernel版本3.10.14driver_register顾名思义,是驱动程序的注册。但是很少是由我们写的驱动直接调用的,例如framebuffer中调用platform_driver_register,i2c中调用i2c_ad...转载 2018-06-14 09:07:43 · 1001 阅读 · 0 评论 -
C语言printf()、sprintf()、vsprintf()的区别与联系
from :https://blog.youkuaiyun.com/raito__/article/details/48860119printf() 在控制台应用程序中最为常用,使用也很简单。其参数为格式化字符串。函数原型:printf(const char *format,[argument]);例如:[cpp]view plaincopyinta=1,b=2;printf("a=%d,b=%d...原创 2018-05-29 14:26:25 · 22182 阅读 · 15 评论 -
linux驱动 之 module_init解析 (下)
个人笔记,欢迎转载,请注明出处,共同分享 共同进步 http://blog.youkuaiyun.com/richard_liujh/article/details/46758073 -- 刘金辉忙了一段时间,终于有时间把inux内核很吊之 module_init解析 (下)整理完毕。从上一篇博文http://blog.youkuaiyun.com/richard_liujh/article/details/4566...转载 2018-06-12 09:52:42 · 295 阅读 · 0 评论 -
linux驱动 之 module_init解析 (上)
欢迎转载,相互学习,但请注明出处,非常感谢!http://blog.youkuaiyun.com/richard_liujh/article/details/45669207- 刘金辉写过linux驱动的程序猿都知道module_init() 这个函数。那么我们来了解一下module_init这个函数的具体功能和执行过程在kernel源码目录中找到include\linux\init.h文件[cpp] vie...转载 2018-06-12 09:12:48 · 483 阅读 · 0 评论 -
Linux环境下段错误的产生原因及调试方法小结
http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小...转载 2018-07-06 11:12:26 · 28836 阅读 · 1 评论 -
两个线程同时调用一个函数会出现什么情况?
from: https://www.cnblogs.com/silentNight/p/5468805.html最近在研究多线程,然后突然想到如果两个线程同时访问一个函数的话,要不要加锁呢,加锁怎么加,不加又怎样这样的问题..然后去网上找了些帖子学习学习......上面的代码明显执行串了!!!!函数本身只是代码,代码是只读的,无论多少个线程同时调用都无所谓,因为是只读嘛.但是函...转载 2018-07-24 17:43:49 · 33942 阅读 · 0 评论 -
BMP文件格式详解
BMP文件格式详解(BMP file format)from : https://blog.youkuaiyun.com/o_sun_o/article/details/8351037BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。由于它可以不作任何变换地保存图像像素域的数据,因此成...转载 2018-08-21 15:22:25 · 40409 阅读 · 0 评论 -
shell 用command 命令
from:https://blog.youkuaiyun.com/u011068702/article/details/80787824command [-pVv] command [arg ...]Run command with args suppressing the normal shell function lookup. Only builtin commands or comm...转载 2019-04-24 17:58:00 · 10103 阅读 · 0 评论 -
Linux 软件安装到 /usr,/usr/local/ 还是 /opt 目录?
from:https://blog.youkuaiyun.com/aqxin/article/details/48324377Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的/usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32。/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/...转载 2019-03-19 17:39:52 · 528 阅读 · 0 评论 -
ldconfig和环境变量
ldconfig参考:http://man.linuxde.net/ldconfig https://blog.youkuaiyun.com/chenzixun0/article/details/56278632 主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld....转载 2019-02-15 09:10:51 · 782 阅读 · 1 评论 -
bashrc与profile的区别
bashrc与profile的区别1, 要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,she...转载 2019-02-14 18:37:42 · 11231 阅读 · 3 评论 -
C语言中 malloc 和 free
from:http://blog.sina.com.cn/s/blog_af1a77fa0102xceb.html一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多...转载 2018-09-21 11:16:20 · 267 阅读 · 0 评论 -
Linux下的静态库与动态库
from:https://blog.youkuaiyun.com/llzk_/article/details/55519242库在windows和Linux下都存在着大量的库,库是什么呢?本质上来说,库时一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有什么用呢?我们通常将一些公用函数写成函数库,所以库是别人写好的,现有的,成熟的,可以服用的代码,你可以使用但要必须得遵守许可协议。在...转载 2018-09-19 09:20:59 · 167 阅读 · 0 评论 -
为什么函数传参中要使用const指针及 输入型参数和输出型参数
参考朱有鹏C语言大讲台1、函数为什么需要形参和返回值(1)函数名是一个符号表示整个函数代码段的首地址, 实质是一个指针的常量,指针常量指向这个函数 用到的函数名都是当地址用的,用来调用这个函数的。(2)函数体是函数的关键,由一对{}括起来,包含很多句代码。 函数体就是函数实际上做的工作。(3)形参的列表和返回值 ...转载 2018-09-18 17:16:45 · 4184 阅读 · 0 评论 -
【C深入】逻辑运算符&&、||、!使用分析
摘自网络:int i = 0;int j = 0; if( ++i > 0 || ++j > 0 ){ printf("%d\n", i); //输出1 printf("%d\n", j); //输出0}改为if( ++i > 0 && ++j > 0 ){ printf("%d\n"..转载 2018-09-18 14:19:56 · 438 阅读 · 0 评论 -
C语言 ## __VA_ARGS__ 宏
##名称:预处理拼接符,或者称其为宏拼接符作用:用于类似函数的宏的替换部分,还可以用于类似对象的宏的替换部分。##放在宏的替换部分的前面,用于宏展开(即宏替换)后,立即将宏中位于##右边的宏替换部分与该宏中位于##左边的部分相拼接至一个整体。例子1:// 宏定义#define XNAME(n) x##n // 宏调用 int XNAME(4) = 1; // 宏展开(即宏替换)后,我们得到: in...转载 2018-05-29 11:26:04 · 3065 阅读 · 0 评论 -
linux tricks 之 BUILD_BUG_ON_ZERO.
-------------------------------------------本文系作者原创, 欢迎大家转载!转载请注明出处:netwalker.blog.chinaunix.net------------------------------------------- 尽管在大多数时候只需关心代码运行的正确性,但是很多时候需要在编译期间就发现这些潜在的致命错误。内核提供了两个有力的宏定义:...转载 2018-05-29 10:01:56 · 733 阅读 · 0 评论 -
内核宏ALIGN的含义
from: https://blog.youkuaiyun.com/reille/article/details/6329195在linux2.6.30.4中,在include/linux/kernel.h文件中,ALIGN宏的定义如下:[cpp] view plain copy#define ALIGN(x,a) __ALIGN_MASK(x,(typeof(x))(a)-1) #define ...转载 2018-05-29 09:31:11 · 2087 阅读 · 0 评论 -
linux内核可变参数分析
from:http://blog.chinaunix.net/uid-21273878-id-1828735.htmltypedef char * va_list;/* * Storage alignment properties */#define _AUPBND (sizeof (acpi_native_int) - 1) //acpi_native_int 为4字节(32位)(根据机...转载 2018-02-23 16:38:33 · 346 阅读 · 0 评论 -
C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
from:http://blog.youkuaiyun.com/edonlii/article/details/8497704C语言可变参简介 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如...转载 2018-02-23 17:11:39 · 173 阅读 · 0 评论 -
关于vsnprintf的一些总结
from: http://blog.youkuaiyun.com/taotaost/article/details/52894192函数声明: int vsnprintf(char *str, size_t size, const char *format, va_list ap);关于该函数各个参数的具体意义不再赘述,参见百度百科即可,下面仅对该函数使用过程中的一些细节或者注意点进行说明。#include ...转载 2018-02-24 10:42:38 · 1590 阅读 · 0 评论 -
arm linux 从入口到start_kernel 代码详细分析
from: http://blog.youkuaiyun.com/tony821224/article/details/6452346最近研究了一下arm linux的入口部分的代码, code不是太多,所以写了个笔记,详细的分析了每一条语句.大家看看, 交流一下.下面使正文. 由于内容比较多,分几层楼发吧____________________________________________________...转载 2018-02-26 15:17:22 · 636 阅读 · 0 评论 -
LD用法
LD用法LD连接脚本(linker script)主要是用来描述输入文件中的节(section)是如何映射到输出文件的,并且控制输出文件的内存布局(memory layout);源代码会编译成为目标对象文件(object file),每个对象文件中包含一系列的段(section),为LD的输入文件。官方资料:http://sourceware.org/binutils/docs/ld/ 或inf...转载 2018-02-26 15:23:36 · 4592 阅读 · 0 评论 -
Linux Kernel系列一:开篇和Kernel启动概要
from:http://blog.youkuaiyun.com/innost/article/details/6693731前言最近几个月将Linux Kernel的大概研究了一下,下面需要进行深入详细的分析。主要将以S3C2440的一块开发板为硬件实体。大概包括如下内容:1 bootloader分析,以uboot为主,结合具体开发板的情况。我的目标是解释清楚uboot的工作原理(说实话,分析过程中不太想被硬...转载 2018-03-06 14:24:06 · 187 阅读 · 0 评论 -
【Linux内核数据结构】最为经典的链表list
From : https://blog.youkuaiyun.com/wenqian1991/article/details/44515713很久之前研读过Linux的内核源码,看到其中的内核数据结构,对链表的实现叹为观止,是迄今为止我见过的最为经典的链表实现(不是数据内嵌到链表中,而是把链表内嵌到数据对象中)。现在再来回顾这个经典的数据结构。链表代码在头文件<linux/list.h>中声明(推...转载 2018-04-17 10:13:55 · 275 阅读 · 0 评论 -
Linux中THIS_MODULE宏定义详解
from:https://www.cnblogs.com/sky-heaven/p/4554614.html 一直都在耿耿于怀,这个THIS_MODULE到底是个什么玩意,linux内核中无处不在的东西。今天上网搜了一下,算是基本明白了。网上牛人写的已经比较详细,另外目前暂时没有时间往更深层次分析,所以直接贴过来得了。。。转帖网址:http://blog.youkuaiyun.com/a954423389/a...转载 2018-03-16 16:35:39 · 12653 阅读 · 4 评论 -
.align 5之类的知识
from:http://www.360doc.com/content/13/0515/08/7245213_285516142.shtml经常会看到arm-linux汇编中有如下的指令:.align n它的含义就是使得下面的代码按一定规则对齐。.align n 指令的对齐值有两种方案:n 或 2^n 。各种平台最初的汇编器一般都不是gas,采取方案1或2的都很多,gas的目标是取代原来的汇编器,必...转载 2018-02-07 13:45:24 · 1217 阅读 · 0 评论 -
ARM 汇编的mov操作立即数的疑问
from: http://blog.chinaunix.net/uid-20799298-id-99632.html1. 因为对arm汇编有些指令还不能理解,特别是一些相似功能指令间的区别。偶然在网上搜到“faq ARM assembly”,其中描述的几个问题还是值得好好研究一下。2. 慢慢的发现自己也不再害怕英文的文档了,耐心看至少也能懂个大概。大批经典的文章和书籍都是en文的,所以经常看英文文...转载 2018-02-06 16:26:37 · 1373 阅读 · 0 评论 -
【转】ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的
from:https://www.crifan.com/switch_arm9_2410_transplant_arm_interrupt_principle_the_error_interrupt_nesting_how_come_the_interrupt_number/【转】ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的几天前一个学生问我ARM中断嵌套的问题,我才...转载 2018-02-02 13:48:12 · 223 阅读 · 0 评论 -
Linux双向循环链表的实现
from: https://blog.youkuaiyun.com/yaozhenguo2006/article/details/7621551链表是一种重要的数据结构,应用的非常广泛。链表分为单向链表与双向链表,一般的实现就是在结构体中内嵌指向下一个元素的指针。例如:[cpp] view plain copystruct name { int num; ...; struct ...转载 2018-05-23 17:37:48 · 604 阅读 · 0 评论 -
_FUNCTION__, __func__, __PRETTY_FUNCTION__
Solaris下支持C99的__func__ gcc 支持 __FUNCTION__, __func__, __PRETTY_FUNCTION__ 俺一般使用__FUNC__ C/C++ code #if defined (__GNUC__) # define __FUNC__ ((const char*) (__PRETTY_FUNCTION__)) #...转载 2018-05-25 13:29:26 · 2289 阅读 · 2 评论 -
如何获取STM32 MCU的唯一ID
from: http://www.cnblogs.com/foxclever/p/8321838.html前段时间由于应用需要对产品授权进行限制,所以研究了一下有关STM32 MCU的唯一ID的资料,并最终利用它实现了我们的目标。1、基本描述在STM32的全系列MCU中均有一个96位的唯一设备标识符。在ST的相关资料中,对其功能的描述有3各方面:用作序列号(例如 USB 字符串序列号或其它终端应用...转载 2018-05-19 12:46:21 · 1209 阅读 · 3 评论 -
brk(), sbrk() 用法详解
from:https://blog.youkuaiyun.com/sgbfblog/article/details/7772153brk() , sbrk() 的声明如下:[cpp] view plain copy#include <unistd.h> int brk(void *addr); void *sbrk(intptr_t increment); 这两个函数都用来改变 "progr...转载 2018-05-17 11:37:12 · 7412 阅读 · 0 评论 -
c语言中__attribute__的意义
from:https://blog.youkuaiyun.com/hpu11/article/details/53326609我们在进行定义数据结构计算数据结构大小的时候,或者进行网络通讯的socket发送数据的时候,都会遇到一个共同的问题:数据对齐问题。这个问题是硬件为提高访问数据的效率,引出的问题,这里就不具体说这样为什么可以提高数据的访问效率,有兴趣的人,网上都有。既然这个问题是实实在在存在的,并且软件...转载 2018-04-20 10:54:29 · 509 阅读 · 0 评论 -
ARM使用术语清除(flush)和清理(clean)表示对cache的两种基本操作
from:https://blog.youkuaiyun.com/arriod/article/details/2826959 清除cache的意思是清除cache中存储的全部数据。对处理器而言,清除操作只要清零相应cache行的有效位即可。当存储器配置上有变化时,整体或部分cache可能需要进行清除操作。有时也用术语作废(invalidate)来代替术语“清除”。然而,对于采用写回策略的D-cache,就需...转载 2018-04-19 14:12:05 · 7309 阅读 · 0 评论