
linux
文章平均质量分 64
剥丝机器人
这个作者很懒,什么都没留下…
展开
-
【无标题】install gcc on ubuntu 1804
install gcc on ubuntu 1804原创 2022-06-30 17:41:09 · 233 阅读 · 0 评论 -
pi zero build
#!/bin/bash -eexport KERNEL=kernelexport PATH=${PATH}:......../tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/binmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfigmake -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage转载 2020-07-06 10:59:25 · 279 阅读 · 0 评论 -
Zephyr libc简介和malloc分析
https://lgl88911.gitee.io/2019/10/29/Zephyr-libc%E7%AE%80%E4%BB%8B%E5%92%8Cmalloc%E5%88%86%E6%9E%90/Zephyr libc简介和malloc分析本作品采用知识共享署名发表于 2019-10-29 | 分类于 iot | | 阅读次数: 118本文简要介绍Zephyr的标准C库,并基于nrf52832分析malloc的heap来源。本文只对开启了用户模式(CONFIG_USERSPA转载 2020-06-04 11:11:55 · 1188 阅读 · 0 评论 -
u-boot与linux下网卡MAC地址的更改
前言①假设有许多开发板,连接到了同一个路由器中,而路由器的dhcpd是根据MAC地址来分配一个固定的IP地址,那么就需要为每一个开发板设定一个不同的MAC地址从而获取不同的IP地址。②MAC地址是需要购买的(参考点1),在产品出厂之前,都需要给板子一个MAC地址(如果有对应的设备,例如网卡,Wifi)。且这个MAC地址在出厂后,我们并不期望被更改。下面简述了嵌入式产品中如何保证IP地址不...转载 2020-02-28 11:30:25 · 1775 阅读 · 0 评论 -
UBI文件系统制作和挂载
关于参数可以参考attach的命令输出:root@ubuntu:~# ubiattach /dev/ubi_ctrl -m 4 -d 0UBI device number 0, total 4000 LEBs (516096000 bytes, 492.2 MiB), available 0LEBs (0 bytes), LEBsize 129024 bytes (126.0 KiB...转载 2019-12-16 14:53:25 · 1009 阅读 · 0 评论 -
fstab是什么?被谁用?怎么写?
fstab是什么?被谁用?怎么写?关键词:fstab、mount -a、fsck等等。1. fstab是干什么的?fstab是file system table的意思,即文件系统表。它在开机的时候告诉系统挂载哪些分区、挂载点是什么、以什么格式挂载、挂载的选项等等。然后系统在开机的时候就根据fstab内容,执行挂载操作。在挂载完之后,就可以在文件系统上进行操作。将需要挂...转载 2019-12-04 17:08:38 · 3153 阅读 · 0 评论 -
openwrt /etc/inittab
https://openwrt.org/docs/techref/process.bootThe Boot ProcessAs noted below, this page is woefully out of datePlease also seerequirements.boot.process This guide it not up-to-date! It does n...转载 2019-12-04 13:32:22 · 1114 阅读 · 0 评论 -
openwrt 中busybox 的配置
近日添加了一个包到openwrt中,在此过程中又对openwrt多了一些认识这个包本身自带了kconfig,可直接在这个包里面执行make menuconfig进行配置,然后执行make但要集成到openwrt中,就需要把这些配置项都集成到openwrt的配置中。面对这种情况,当然是要找个现成的例子做参考,首先想到的就是busybox。以下以busybox为例进行说明,源码摘自gi...转载 2019-11-03 12:17:51 · 4751 阅读 · 0 评论 -
UBI文件系统 nand驱动子页支持问题
我在用TI的dm368开发板,kernel是2.6.32.17,默认的flash文件系统是jffs2,但是jffs2在大分区下,mount速度很慢,而且占用ram较多,因此,我想使用ubifs看看性能是否会更好些。ubifs的原理和配置过程,很多网页都有介绍的,我给一个链接,大家可以看看,我就不转载了,我重点说我移植过程中遇到并解决的问题。http://bbs.chinaunix.net/...转载 2019-10-23 09:46:14 · 747 阅读 · 0 评论 -
openwrt: Makefile 框架分析
本篇的主要目的是想通过分析Makefile,了解openwrt编译过程。着重关注以下几点:openwrt目录结构 主Makefile的解析过程,各子目录的目标生成。 kernel编译过程 firmware的生成过程 软件包的编译过程openwrt目录结构官方源下载速度太度,我从github上clone了openwrt的代码仓库。git clone https://githu...转载 2019-10-12 17:42:31 · 3697 阅读 · 1 评论 -
softirq原理以及源码分析
Linux 的softirq机制是与SMP紧密不可分的。为此,整个softirq机制的设计与实现中自始自终都贯彻了一个思想:“谁触发,谁执行”(Who marks,Who runs),也即触发软中断的那个CPU负责执行它所触发的软中断,而且每个CPU都由它自己的软中断触发与控制机制。这个设计思想也使得softirq 机制充分利用了SMP系统的性能和特点。 多个softirq可以并行执行,甚至同转载 2012-09-20 19:47:03 · 774 阅读 · 0 评论 -
dd命令的解释(转)
dd命令的解释dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。注意:指定数字的地方若以下列字符结尾则乘以相应的数字:b=512;c=1;k=1024;w=2参数:1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。3. ibs=bytes:一次读入bytes个字节,即指定一个块大小转载 2012-12-20 10:00:36 · 641 阅读 · 0 评论 -
linux中vmstat命令详解
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。通常使用vmstat 5 5(表示在5秒时间内进行5次采样)命令测试。将得到一个数据汇总他能够反映真正的系统情况。#vmstat 5 5procs -----------memory-转载 2012-12-20 10:02:50 · 488 阅读 · 0 评论 -
Cache 的write back和write through
为了保证cache和memory的数据一致性,通常有三种方法:1〉write through:CPU向cache写入数据时,同时向memory也写一份,使cache和memory的数据保持一致。优点是简单,缺点是每次都要访问memory,速度比较慢。2〉post write:CPU更新cache数据时,把更新的数据写入到一个更新缓冲器,在合适的时候才对memory进行更新。这样可以提高ca转载 2013-01-07 20:08:06 · 619 阅读 · 0 评论 -
ftrace 简介
ftrace 简介本文已经更正原文的一些错误,如有疑问请联系:Q:328333568ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析。最早 ftrace 是一个 function tracer,仅能够记录内核的函数调用流程。如今 ftrace 已经成为一个 framework,采用 plugin 的方式支持开发人员添加更多种类的 tr转载 2013-01-08 16:51:06 · 909 阅读 · 0 评论 -
WORK Experience
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->1) MS in EE, CE, CS or equivalent is required2) 3+ year relevant embedded software development and debugging experience is requi原创 2013-01-24 13:17:09 · 523 阅读 · 0 评论 -
重装机器时怎么设置从光盘启动?
方法1:首先,确定你的光驱是第一启动顺序并支持从光驱启动。要从光盘安装,要把BIOS进行设置,使系统能够从光盘启动。其方法如下:(1)启动计算机,当屏幕上显示 Press Del to Enter BIOS Setup提示信息时,按下键盘上的Del键,进放主板BIOS设置界面。(2)选择 Advanced BIOS Features 选项,按Enter键进入设置程序。选择First B转载 2013-01-25 12:45:01 · 3628 阅读 · 0 评论 -
Ubuntu10.04光盘启动重新安装GRUB到主引导区MBR修复Linux启动
安装Linux的时候,已经习惯使用GRUB来引导系统,最近Windows崩溃,重装了一次,刚好把MBR上面GRUB删掉了,这样硬盘里面虽然有完整的系统跟引导配置文件,却无法启动Linux... 现在有两个方案,一个是安装grub4dos,修改配置文件,然后启动linux.还有就是把grub重新安装到MBR上面。 现在习惯了开机启动的方法,所以我们把grub重新安装到硬盘的M转载 2013-01-25 12:43:45 · 932 阅读 · 0 评论 -
printk 效率好低,能快点不?
先看ftrace 是否可以有帮助,搜索下pr_debug(), dev_info()。如果不行搜索出的内容没有自己想要的,那还是乖乖用 printk,大家有什么更好的办法??原创 2013-01-22 10:52:20 · 709 阅读 · 0 评论 -
PCI子系统之-resource插入算法
/* * Insert a resource into the resource tree. If successful, return NULL, * otherwise return the conflicting resource (compare to __request_resource()) */static struct resource * __insert_res原创 2013-01-15 16:40:30 · 592 阅读 · 0 评论 -
Linux内核DMA机制
DMA控制器硬件结构原文地址:Linux内核DMA机制 作者:piaoyizu目录[隐藏]12 DMA控制器硬件结构2.1 DMA通道使用的地址2.2 DMA操作函数2.3 DMA映射2.3.1 (1)建立一致 DMA 映射2.3.2 (2)建立流式 DMA转载 2013-02-26 14:57:36 · 941 阅读 · 0 评论 -
gcc/g++编译
gcc/g++编译1. gcc/g++在执行编译工作的时候,总共需要4步(1).预处理,生成.i的文件[预处理器cpp] (2).将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] (3).有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] (4).连接目标代码,生成可执行程序[链接器ld][参数详解] -x language fi转载 2013-03-01 19:52:10 · 522 阅读 · 0 评论 -
比特域
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->比特域是一种由结构体扩展而来的数据结构组织形式,也称为位域,占位符等。类似下面的定义:structcard{unsigned int pips:4;//占据4个位的长度unsigned int suit:2;unsigned char kq转载 2013-03-12 17:15:03 · 1287 阅读 · 0 评论 -
大端模式与小端模式、网络字节顺序与主机字节顺序
大端模式与小端模式一、概念及详解 在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式。 先回顾两个关键词,MSB和LSB: MSB:Most Significant Bit ------- 最高有效位 LSB:Least Significant Bit ------- 最低有效位转载 2013-03-13 14:03:54 · 909 阅读 · 0 评论 -
linux总线驱动之DMA传输
最早接触DMA的时候是大三的微机原理,当时不是很理解,什么DMA模式啊,只知道是传输速度快,不经过CPU,但是到底是怎么样的不经过CPU呢?还是不理解。这次I2C控制器里面带了DMA的模式,所以有机会去接触下了。 而具体的DMA的意思是什么http://baike.baidu.com/view/32471.htm,百度百科里还是不错的。 DMA的工作过程:(该图是有错误的,转载 2013-03-14 10:24:55 · 2177 阅读 · 0 评论 -
vim
vim 删除每行开头结尾空格Fedora:删除行末空格::%s/\s\+$//删除行首空格::%s/^\s\+// "%":作用于整个文件;"\s\+$":表示行末($)前的一个或者多个(\+)空格(\s);"^\s\+":行首(^)的一个或者多个(\+)空格(\s);"//":替换命令的 "to" 部转载 2013-03-01 19:53:52 · 377 阅读 · 0 评论 -
dev_queue_xmi函数详解
http://blog.chinaunix.net/uid-20788636-id-3181312.html前面在分析IPv6的数据流程时,当所有的信息都准备好了之后,例如,出口设备,下一跳的地址,以及链路层地址。就会调用dev.c文件中的dev_queue_xmin函数,该函数是设备驱动程序执行传输的接口。也就是所有的数据包在填充完成后,最终发送数据时,都会调用该函数。转载 2013-03-29 10:36:11 · 1476 阅读 · 0 评论 -
应用层 和 内核通讯
fd = open(DEVICE, O_RDWR | O_NONBLOCK | O_SYNC | O_EXCL); for (;;) { FD_ZERO(&set); FD_SET(fd, &set); n = select(wd_fd+1, &set, NULL, NULL, NULL); if (FD_I原创 2013-04-08 16:41:10 · 844 阅读 · 0 评论 -
Linux内核开发之阻塞/非阻塞IO----等待对列
http://www.cnblogs.com/hanyan225/archive/2010/10/12/1848914.html十一过后..小王也刚好即将大学毕业,现在要开始写简历,投简历,找工作了。到了家工作单位,小王欣喜若狂,可再一看,心都凉了半截..“咋了,小王,看你找工作,我都来了帮你大气,怕什么,不就人多点吗..”看着排到电梯口的长龙,我说(其实,我心转载 2013-04-08 18:04:32 · 826 阅读 · 0 评论 -
花
http://hi.baidu.com/yilianjianxuan/item/3497675a0890c89709be1788转载 2013-04-17 19:06:03 · 641 阅读 · 0 评论 -
I/O空间-----I/O端口和I/O内存
I/O空间-----I/O端口和I/O内存 首先上图,如下:外设中的寄存器被称为I/O端口,外设中的内存被称为I/O内存。二者合起来统称为I/O空间。 设备驱动程序要直接访问外设或其接口卡上的物理电路,这部分通常都是以寄存器的形式出现。外设寄存器称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根转载 2013-05-07 19:18:25 · 1031 阅读 · 0 评论 -
8.3.2 add_timer
http://book.51cto.com/art/201202/319703.htm8.3.2 add_timer当程序定义了一个定时器对象,并且通过init_timer函数及相应代码对该定时器对象中的expires、data和function等成员初始化之后,程序需要调用add_timer将该定时器对象加入到系统中,这样定时器才会在expires表示的时间点到期后被触发。转载 2012-11-14 20:05:07 · 1181 阅读 · 0 评论 -
Linux hrtimer分析(2)
本文介绍Linux2.6.29中,配置高精度模式的hrtimer与未配置高精度模式时行为的区别。本文暂不考虑高精度模式对Linux系统时钟中断的影响。 在没有配置高精度模式时,hrtimer的超时在系统时钟中断的轮循中检查,所以此时hrtimer的定时精度还是以轮循的间隔为单位,精度与传统的时间轮定时器一样。在配置高精度模式后,hrtimer的超时由struct clock_event转载 2012-12-28 09:22:00 · 612 阅读 · 0 评论 -
timer部分笔记
http://minano-notebook.wikidot.com/kernel-timer用语当前时间:当前的实际时间。用date命令得到的值变量,数据结构:xtime:基本上相当于当前时间,但xtime只能被定期更新,所以略微滞后于当前时间。滞后的时间由get_nsec_offset获得,二者相加得到当前时间(严格说来不是如此。get_nsec_offset的转载 2013-03-15 16:21:57 · 841 阅读 · 0 评论 -
Linux hrtimer分析(一)
Linux2.6中实现了一种新的定时器hrtimer。与传统定时器使用时间轮算法不同,hrtimer使用了红黑树算法。hrtimer本身可以配置成高精度和普通精度两种,在单CPU系统和多CPU系统中的实现也有区别。这里先分析最简单的配置成普通精度、单CPU的情况。配置成高精度的情况见后续文章,技术联系qq:328333568。1. 时钟源的定义为了实现hrtimer,Linux为系转载 2012-12-28 09:15:20 · 689 阅读 · 0 评论 -
linux内核中打开文件 及属性控制
<!--@page {margin:0.79in}p {margin-bottom:0.08in}a:link {}-->共两篇文章:还可以参考linux那些事linx_sysfs==================================================================================转载 2013-05-09 15:35:58 · 1712 阅读 · 0 评论 -
mod_timer 详解
mod_timerPrev Delaying, scheduling, and timer routines NextNamemod_timer — modify a timer's timeoutSynopsisint fsfuncmod_timer (struct timer_list * time转载 2013-05-23 09:59:22 · 8114 阅读 · 4 评论 -
OK---内核定时器的使用
work_pending( ) - Find out whether a work item is currently pendingif(!work_pending(&work)){mod_timer(&timer, jiffies + TIMEOUT* HZ);queue_work(work_queue,&work);}=====转载 2013-03-15 15:20:45 · 1217 阅读 · 0 评论 -
get memory corruptions earlier
0 - adb root && adb shell1 - mount -t debugfs /d /d2 - cd /d/osip3 - cat cmdline # copy the current command line4 - echo slub_debug=FPZU > cmdline5 - cat cmdline # check that it finishes with "s转载 2013-05-24 16:08:21 · 1107 阅读 · 0 评论 -
irq come after suspend
防止中断来后访问掉电的设备。staticint xx_runtime_suspend(struct device*dev){drvdata->xx_suspended= 1;disable_irq(pdev->irq);}staticint xx_runtime_resume(struct device*dev){drvd转载 2013-05-24 15:00:26 · 1314 阅读 · 0 评论