(1)fcntl函数说明 前面的这5个基本函数实现了文件的打开.读写等基本操作,这一节将讨论的是,在文 件已经共享的情况下如何操作,也就是当多个用户共同使用.操作一个文件的情况,这时,Linux 通常采用的方法是给文件上锁,来避免共享的资源产生竞争的状态. 文件锁包括建议性锁和强制性锁. 建议性锁要求每个上锁文件的进程都要检查是否有锁存,并且尊重已有的锁.在一般情况下,内核和系统都不使用建议 性锁.强制性锁是由内 核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他任何文件对其进行读写…
嵌入式系统Linux内核开发工程师必须掌握的三十道题 如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看! 1) Linux中主要有哪几种内核锁? Linux的内核锁主要是自旋锁和信号量. 自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用.要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行.自旋锁可以在任何时刻防止多于一个的执行…
构建嵌入式小型Linux系统 摘要:用buildroot构建x86的交叉编译工具链:裁减linux内核,尽可能做到最小:手工构建根文件系统:安装qemu虚拟机,仿真新配置的Linux系统:为新配置的Linux系统添加网络支持,在host主机上用bridge-utils构建网桥,通过虚拟网卡tun/tap以NAT的方式使虚拟机能够上网. 一.安装qemu QEMU是一款开源交叉平台仿真器.可以仿真许多硬件体系(x86,x86-64,PowerPC等). 可以到http://wiki.qemu.or…
一.从一个问题说起 相信很多人在玩手机还是PC时,都曾碰到过这样一种情况,安装的软件多了系统性能就变慢了,但是去查看CPU利用率一直都低于10%,内存也很充足.我在近期的开发工作中就碰到了类似的情况,不同的是,系统此时只有一个测试程序和几个睡眠的后台进程,说明是系统,特别是驱动部分可能出现问题导致的. 从操作系统角度上分析,以下是一些比较可能的原因: 大量的中断可能是在不断磁盘读写,网络通讯, 也可能是模块使用不当或者硬件上出问题导致外设不断给CPU送中断: 系统负载高(注意:不是CPU利用率)…
2014025641 <嵌入式程序设计>第1周学习总结 本周学习内容 首先我们先复习下之前学习过的内容,什么是linux? Linux 就是一个操作系统,就像你多少已经了解的 Windows(xp,7,8,10),它比Windows有更多的优点 1.拥有稳定的系统 2.安全性和漏洞的快速修补 3.多用户 4.用户和用户组的规划 5.相对较少的系统资源占用 6.可定制裁剪,移植到嵌入式平台(如安卓设备) 7.可选择的多种图形用户界面(如 GNOME,KDE) 但它也不是万能的也有很多弱点. 1.…
一.前言嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序.采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试. Gdbserver在目标系统中运行,gdb则在宿主机上运行.目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序.在此我们还不能直接采用linux发行版自带的gdb,需要交叉编译gdb和gdbserver. 二.编译gdb和gdbserve…
1). 简介 本文简单介绍ARM嵌入式设备基于嵌入式Linux操作系统时候的启动步骤和启动方式, 区别与X86平台,ARM平台下并没有一个标准的启动步骤,不同ARM SoC都会使用各自定义的boot ROM来实现启动过程,不过大体上面都包含有一些基本步骤.本文就基于Toradex ARM计算机模块和配套载板来介绍基于Freescale i.MX6 ARM嵌入式设备的启动步骤和方式. 2). 启动步骤 a). 电源上电,系统Reset. b). CPU内部boot ROM读取, strapping…
Linux系统作为一个GPOS(通用操作系统)发展至今已经非常成熟可靠了,并且由于遵循GPL协议,开放所有系统源代码,非常易于裁剪.更重要的是,与其他开源的GPOS或RTOS相比,Linux系统支持多种处理器.开发板,提供多种软件开发工具,同时Linux系统对网络和图形界面的支持非常出色.显然,选择Linux操作系统在产品的开发周期和成本控制方面都有巨大优势. 虽然Linux系统功能强大.实用性强.易于软件的二次开发,并且提供编程人员熟悉的标准API.但是由于Linux系统一开始就被设计成GPO…
本文将介绍通过完全手动定制内核,在此基础上添加 busybox ,并实现远程登陆,使裁剪的 linux 能够运行 nginx . 在此之前介绍一下 linux 系统的启动流程. linux系统启动流程 POST-->BIOS(BOOT Sequence)-->MBR(bootloader,446个字节)-->kernel-->initrd(initramfs)-->(ROORFS)/sbin/init(/etc/inittab) 注:以上linux启动流程只是针对于cento…
{ 个人心得: 嵌入式底层重要的是在CPU(各种架构)或SOC基础上,利用u-boot初始化系统,并启动OS,建立实时多任务环境.文件系统等,再根据功能要求设计上层程序:而对硬件的需有足够掌握. } 1 cmd命令 1.1 常用命令 pwd.ls.cd.mkdir(文件操作:touch.cp.mv.rmdir.rm.vi.cat): 1.2 进阶命令 1)单个文件压缩.解压: gzip.bzip2: 2)多个文件及目录压缩.解压: tar -xjvf: tar -xzvf -C 目录名: tar…