嵌入式Linux中文站

最新发布

行业新闻

那些年,林纳斯大神喷过的技术

阅读(187)

导读 Linus Torvalds 被认为是最伟大的程序员之一,因为他写出了使用最广泛的软件,如Linux内核和 Git 版本控制系统。但是他这个人经常因为讲话带有情绪,甚至是因为带有脏话的意见而饱受非议。 有些时候,Linus Torvalds 认为那些工作没做好,或者持有不同观点或竞争关...

行业新闻

Linux 爸爸怒怼社交媒体

阅读(196)

导读 科技先锋 Linus Torvalds 表示,当今社交媒体运作的方式暗中鼓励人们的不良行为。它们就是一种恶疾。 让我们来数数当今社会里还有多少不对社交媒体表示喜欢的人。 Linus Torvalds,芬兰裔美国人,自由软件Linux的创始人。Linux 是一款同苹果的 MacOS 和微软的 Wind...

行业新闻

开源的CPU芯片和SoC设计即将到来

阅读(194)

开源硬件比你想象的要老。Sun在2007年发布了OpenSPARC,并且IBM在2013年启动了OpenPOWER.OpenSPARC将在Oracle收购Sun之后死亡,而OpenPOWER仍然主要由IBM驱动。随着最近RISC-V(发音为Risk-Five)的到来,开源CPU设计终于火了。现在,Linux基金会正在帮助组建CHIPS联盟...

新手入门

一图看懂开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

阅读(211)

首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 以下是上述协议的简单介绍: BSD开源协议 BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以为所欲为,可以自由的使用,修改源代码,也可以将...

内核驱动

Linux内核最新的连续内存分配器(CMA)——避免预留大块内存

阅读(160)

在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用,但是一般的做法又必须先预留着。目前,Marek Szyprowski和Michal Nazarewicz实现了一套全新的Contiguous Memory Allocator。通过这套机制,我...

文件系统

Linux 文件系统扩展属性

阅读(156)

扩展属性(xattrs)提供了一个机制用来将《键/值》对永久地关联到文件,让现有的文件系统得以支持在原始设计中未提供的功能。扩展属性是文件系统不可知论者,应用程序可以通过一个标准的接口来操纵他们,此接口不因文件系统而异。每个扩展属性可以通过唯一的键来区分,...

内核驱动

深入分析Linux自旋锁

阅读(168)

一、自旋锁 spinlock 的由来 众所周知, 自旋锁最初就是为了 SMP 系统设计的,实现在多处理器情况下保护临界区。 所以 在 SMP 系统中,自旋锁的实现是完整的本来面目。 但是 对于 UP 系统,自旋锁可以说是 SMP 版本的阉割版。因为只有 在 SMP 系统中的自旋锁才需要真正...

新手入门

哈佛结构和冯·诺依曼结构的区别

阅读(160)

哈佛结构 (英语: Harvard architecture )是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开...

系统开发

Linux Makefile 中的陷阱

阅读(140)

前言 每个编写过Makefile的程序员都可能遇见过Makefile中内含的陷阱,本博文旨在展现陷阱,提醒自己,也供大家一起学习。 本博文会随所遇见的Makefile陷阱有关的问题而进行后续的更新。 陷阱一:在定义变量的语句后面空格之后使用了#注释符 结果:导致变量的值并不是你...

系统开发

Linux Makefile 编译速度的优化

阅读(62)

前言 如何提高 Makefile 的编译速度呢?既然是提高,那肯定是对于大项目而言,因为小项目本身源文件不多,Makefile 优化与否,对于编译速度而言,影响并不大。当然对于那些追求速度达到极致的人而言,就另当别论了。废话不多说了,切入主题! 本博文会随着所遇见的Makef...

系统开发

linux中结构体对齐

阅读(157)

linux中定义对齐字节 typedef struct sdk_handler { char comm_ver[10]; char name[20]; char reserve[20]; }PACKED sdk_handler_t; #define PACKED //__attribute__((aligned(1),packed)) // 一字节对齐 首先我们先看看下面的C语言的结构体: [cpp] view plaincopy typ...

系统开发

虚拟地址转换为物理地址

阅读(106)

应用程序只能提供一个虚拟地址,也可以通过如下方法获取物理地址,当然得调用驱动。 Linux采用页表的概念来管理虚拟空间,内核在处理虚拟地址时都必须将其转换为物理地址,然后处理器才能够访问。虚拟地址可以通过Linux的页表操作宏逐层查找到物理地址,简单来说需要将...

系统开发

GCC制作动态库导出符号表

阅读(133)

GCC制作动态链接库时默认会将所有的函数及变量都导出到符号表,这里的函数及变量指的是没有使用static修饰的,使用static修饰的函数及变量不会导出。正常情况下所有符号均导出是不会有问题的,但是有时会有问题,在下边的例子中会说明。为了避免这种情况,就需要定制符...

系统开发

GCC 符号表小结

阅读(138)

1) 如何生成不含符号表的目标文件 ? #一个方式是编译的时候使用 选项 s root@root2768:~/test_cgcc -s test1.c root@root2768:~/test_c objdump -t a.out a.out: file format elf64-x86-64 SYMBOL TABLE: no symbols # 另外一个方式是,生成目标文件以后,使用strip命...

系统开发

Linux 指定运行时动态库路径

阅读(56)

众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/ lib 。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库, 并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序...