- 博客(28)
- 资源 (30)
- 问答 (3)
- 收藏
- 关注
转载 malloc和new出来的虚拟地址如何访问实际物理地址
malloc和new出来的地址都是虚拟地址 你就说内存管理单元怎么可能让你直接操作硬件内存地址!malloc的实现与物理内存自然是无关的,内核为每个进程维护一张页表,页表存储进程空间内每页的虚拟地址,页表项中有的虚拟内存页对应着某个物理内存页面,也有的虚拟内存页没有实际的物理页面对应。无论malloc通过sbrk还是mmap实现,分配到的内存只是虚拟内存,而且只是虚拟内存的页号,代表这块空间进程可以用,实际上还没有分配到实际的物理页面。等你的进程访问到这个新分配的内存空间的时候,如果其还没有对应的物理页
2020-10-04 13:28:51
1067
转载 Linux4G空间的内存管理
https://blog.youkuaiyun.com/jiangyuping_fyl/article/details/7268287https://blog.youkuaiyun.com/u011436427/article/details/104761726内核内存使用Slab 所谓尺有所长,寸有所短。以页为最小单位分配内存对于内核管理系统中的物理内存来说的确比较方便,但内核自身最常使用的内存却往往是很小(远远小于一页)的内存块——比如存放文件描述符、进程描述符、虚拟内存区域描述符等行为所需的内存都不足一...
2020-10-04 13:08:16
373
转载 标准I/O与文件I/O
在应用开发中,经常要访问文件,Linux 下的文件读写方式分为两大类:标准 I/O 和 文件 I/O,下面分别介绍下两种 I/O 的相关操作,并比较下两种 I/O 的特点。一、标准I/O标准I/O库接口由ANSI C标准定义,标准IO函数提供了一种对不用缓冲IO函数的带缓冲的接口。不仅在UNIX系统,在很多操作系统上都实现了标准I/O库,标准I/O库处理很多细节,如缓存分配、以优化长度执行I/O等,这样使用户不必关心如何选择合适的块长度。标准I/O在系统调用基础上构造的,它便于用户使用。标准I/O有
2020-08-20 21:42:02
344
原创 用户和内核存(cache)区 缓冲(cache)和缓存(buffer)的区别
用户进程缓存区 用户进程通过系统调用访问系统资源的时候,需要切换到内核态,而这对应一些特殊的堆栈和内存环境,必须在系统调用前建立好。而在系统调用结束后,cpu会从核心模式切回到用户模式,而堆栈又必须恢复成用户进程的上下文。而这种切换就会有大量的耗时。 你看一些程序在读取文件时,会先申请一块内存数组,称为buffer,然后每次调用read,读取设定字节长度的数据,写入buffer。(用较小的次数填满buffer)。之后的程序都是从buffer中获取数据,当buffer使用完后...
2020-08-20 20:51:40
2090
转载 fopen与open的区别
fopen与open的区别open和fopen的区别:1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器 而定
2020-08-20 20:27:50
304
原创 设备树之字符设备驱动_LED
在总线设备驱动模型中驱动程序被分成了两部分;dev部分和drv部分;在dev部分,分配设置注册了一个platform_device设备,具体硬件资源就是在该设备中被描述;在drv部分,同样分配设置注册了一个platform_driver设备,硬件相关的驱动就在这里实现。使用设备树时,写驱动程序时,驱动程序也被分成了两部分;一部分是drv,跟总线设备驱动模型里的platform...
2020-02-16 12:57:23
747
转载 通用的Makefile
1.Linux网络栈下两层实现1.1简介 VLAN是网络栈的一个附加功能,且位于下两层。首先来学习Linux中网络栈下两层的实现,再去看如何把VLAN这个功能附加上去。下两层涉及到具体的硬件设备,日趋完善的Linux内核已经做到了很好的代码隔离,对网络设备驱动也是如此,如下图所示:这里要注意的是,Linux下的网络设备net_dev并不一定都对应实际的硬件设备,只要注册一个s...
2020-01-04 10:19:25
204
原创 Linux环境下多文件工程的2种方法(makefile 的几种写法)
对于多文件工程,可以有两种方法编译:1 手动编译每个工程文件,然后生成最后的可执行文件。 2 编写Makefile文件(几种方法)工程例子:创建一个目录为GCC,该目录下创建一个main.c文件和两个文件夹分别是add和sub。add目录下创建add.c和add....
2019-10-29 10:23:32
1075
原创 为什么要动态分配内存?什么时候需要动态分配内存?
问:为什么要动态分配内存答1:因为内存太宝贵。答2:如果全部是静止内存不能释放,对于小的程序可以运行完毕。但是对于大的程序,还没运行完,内存就要被占用完,此时就要发生内存泄露。答3:给定一个占用内存可变大小的变量(假设是数组的长度len),给该变量通过函数动态分配内存后,分配内存的大小是根据数组的长度len决定的,假定用户输入len的大小是5,系统就会动态的给该数组分配长度为5的内存,...
2019-10-16 22:04:24
12766
2
原创 Allegro、cadence 17.2的PCB如何转成AD版本的PCB
结合前人的方案:1、复制安装目录下 Altium19\System\Allegro2Altium.bat 和 AllegroExportViews.txt 到Allegro安装目录 Cadence17.2\......\pcbenv 文件夹下(如果找不到pcbenv,就在搜索栏中搜索)2、用文本打开Allegro2Altium.bat,在第一行的extracta.exe前添加extracta....
2019-09-19 20:30:34
17072
4
原创 上拉电阻与下拉电阻的作用
上拉电阻就是把不确定的信号通过一个电阻钳位在高电平,此电阻还起到限流的作用。同理,下拉电阻是把不确定的信号钳位在低电平。上拉电阻是指器件的输入电流,而下拉指的是输出电流。那么在什么时候使用上、下拉电阻呢?1、当TTL电路驱动CMOS电路时,如果TTL电路输出的高电平低于CMOS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。2、OC门电路...
2019-09-10 17:18:34
701
转载 因为项目需要--电容的九大作用(转)
电容是电路设计中最为普通常用的器件,也常常在高速电路中扮演重要角色。在电子线路中的作用一般概括为:通交流、阻直流。电容通常起滤波、旁路、耦合、去耦、转相等电气作用。用作贮能元件也是电容器的一个重要应用领域,同电池等储能元件相比,电容器可以瞬时充放电,并且充放电电流基本上不受限制,可以为某些设备提供大功率的瞬时脉冲电流。电容的用途非常多,主要有如下几种: 隔直流:作用是阻止直流通过而让交...
2019-08-23 19:53:12
276
转载 因为项目需求————电容的部分作用(转)
电容的作用电容的主要作用包括滤波、耦合、谐振、旁路、定时、负载、积分、微分,下面来说一说电容是怎么实现这些作用的。滤波滤波电容即电解电容,正负极不能反接,都说滤波电容,那么到底滤掉的是什么波呢?如上图所示,经过整流桥之后的波形如下所示经过滤波电容之后的波形如下图所示,它的作用是把类似sin波形的电压,稳定在一定值之内,电容的容量越大,波形越平滑,它的作用好似一个水...
2019-08-23 18:07:57
349
1
转载 Linux系统调用列表
转自https://www.ibm.com/developerworks/cn/linux/kernel/syscall/part1/appendix.html#6一、进程控制:二、文件系统控制三、系统控制四、内存管理五、网络管理六、socket控制七、用户管理八、进程间通信以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。...
2019-07-20 22:41:18
129
原创 Linux内核启动分析
嵌入式Linux系统分为三部分:引导程序BootLoader、根文件系统和Linux内核,针对不同的开发板需要不同Boot Loader来引导内核,本文开篇着重对U-Boot如何引导内核启动做详细分析,然后步步深入对内核的详解。该系统的硬件环境是基于S3C2440芯片的ARM9开发板,uboot的版本是u-boot-1.1.6,Linux源码版本是linux-3.4.2,交叉编译链为arm-lin...
2019-07-19 16:36:10
337
原创 ubuntu安装VScode
方法一:ubuntu安装VScode步骤:因为Ubuntu自带visual studio Code 的安装包,所以:1 找到Ubuntu自带的软件包2 然后搜索 vscode3 然后点开安装方法二sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-makesudo apt-get updates...
2019-06-02 20:23:03
294
原创 获取 ESP-IDF,用git clone克隆ESP-IDF,出现子模块克隆不全、拒绝连接等问题、
原本命令行是:cd ~/espgit clone --recursive https://github.com/espressif/esp-idf.git在我这出现拒绝连接的问题,所以分为四个命令去实现:cd ~/espgit clone https://github.com/espressif/esp-idf.gitcd esp-idfgit submodule...
2019-05-31 15:34:12
8271
3
转载 MPEG4视频压缩编码技术详解
MPEG全称是Moving Pictures Experts Group,它是“动态图象专家组”的英文缩写,该专家组成立于1988年,致力于运动图像及其伴音的压缩编码标准化工作,原先他们打算开发MPEG1、 MPEG2、MPEG3和MPEG4四个版本,以适用于不同带宽和数字影像质量的要求。目前,MPEG1技术被广泛的应用于VCD,而MPEG2 标准则用于广播电视和DVD等。MPEG3最初是为HD...
2019-01-18 14:20:25
4723
转载 嵌入式系统 Boot Loader 技术内幕(真是不可多得文章)
转自:https://www.ibm.com/developerworks/cn/linux/l-btloader/index.html1. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader...
2018-12-03 19:15:39
244
原创 开发板通过u-boot和linux内核修改nand flash分区
一个MTD分区折磨了我好几天,现在搞明白了,跟大家分享以下。目的:我的开发板默认的MTDkernel分区是2M,我现在需要将分区扩为4M。硬件平台:JZ2440(芯片:S3C2440)1.在UBOOT下的uboot/include/config/100ask24x0.h 中(开发板不一样,配置文件也不一样)修改,根据自己的情况修改大小。#define MTDPARTS_DEFAU...
2018-12-03 19:07:41
1657
转载 浅谈内核的Makefile、Kconfig和.config文件
刚开始学习Linux内核,在学习的过程中固然有非常非常多的不顺与羁绊,昨天在百问科技的公众号上看了一篇文章,对于我们这些初学者来说,有很大的帮助,因此转载过来供大家一块学习。转自:https://mp.weixin.qq.com/s/D9wBnr9i8FmuF0tm6HwbLwLinux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编...
2018-11-25 11:21:43
145
转载 TCP/UDP Linux网络编程详解
TCP/UDP Linux网络编程详解本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。内容目录1. 目标2.Linux网络编程基础2.1 嵌套字2.2 端口2.3 网络地址2.3.1 网络地址的格式2.3.2 网络地址的转换2.4 字节序3.TCP3.1 TCP流程图3.2 TCP步骤分析3....
2018-11-23 23:29:05
633
原创 boa服务器出现 网页丢失(无网连接状态)
咱们一般上网的网址:https://XXXX但是在使用BOA服务器的时候,我们在输入IP的时候应该输入:http://XXX 比正常URL少一个 s
2018-11-21 20:55:54
713
原创 编译linux内核时出现"mkimage" command not found - U-Boot images will not be built错误
“mkimage” command not found - U-Boot images will not be built/home/jtong/Desktop/linux-3/linux-3.4.2/arch/arm/boot/Makefile:89: recipe for target ‘arch/arm/boot/uImage’ failedmake[1]: *** [arch/arm/...
2018-10-26 22:41:17
359
原创 boa服务器出现502 Bad Gateway The CGI was not CGI/1.1 compliant错误
当我们把boa服务器移植完毕后,很开心的测试下cgi的测试程序(boa中自带的例子,一般先运行boa自带的例子,防止后面出现错误不知道是哪的错误),但是出现如下错误:boa服务器出现502 Bad GatewayThe CGI was not CGI/1.1 compliant错误解决方法:将boa自带的测试程序cgictest.cgi和capature全部设为可读可写执行以下命令:$...
2018-10-24 09:37:13
1601
原创 在移植boa服务器的过程中出现boa:not found问题以及移植cgic库编译时出现arm-linux-gcc-g命令未找到错误
1、嵌入式web服务器移植的过程在网上很多资源的,我在这就不再赘述了,我就简单说下一个对于新手来说很头疼的问题!!移植boa服务器的时候,所有的编译工作以及移植工作全部做完了,就差最后启动boa服务器了,就在这时,让我倒腾了好几天的一个错误:-sh: ./boa: not found。有些网友在网上也有解决的方法,就是修改Makefile中的LDFLAGS = -g改为LDFLAGS = ...
2018-10-23 23:13:36
851
2
原创 制作跟文件系统时出现的一些错误
在make busybox的时候出现如下错误:/arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h:44: error: field ‘in’ has incomplete type/arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h:45: error: field...
2018-10-22 11:58:18
1439
原创 Ubuntu 配置交叉环境编译环境-嵌入式
安装了两次交叉编译环境变量了,记录下,如下为亲自测试。1 、下载arm-linux-gcc ,下面网址分享两个gcc版本 4.4.3 和 4.3.2以4.3.2版本为例,4.4.3.操作一样。https://pan.baidu.com/s/16-8MUM0gQJEMjRDjW8xYQg2、解压文件$tar xjf arm-linux-gcc-4.3.2.tar.bz23、修改环境变量...
2018-10-21 15:27:51
322
VISIO画时序图的模块和组件
2022-01-21
基于SNMP的网络拓扑发现开源让u软件.zip
2020-07-07
STM32F103系列的C8T6资料程序+原理图+pcb.zip
2020-06-22
全志H2芯片技术文档 Allwinner_H2+_Datasheet_V1.2.zip
2020-06-22
open_release_read_write_ioctl.zip
2020-02-22
lpc177x_8x.pdf LPC177x和LPC178X系列数据手册
2020-01-17
Allegro(cadence 17.2) 17.2-AD19.zip
2019-09-19
arm-linux-gcc-3.4.5+4.3.2+4.4.3
2018-11-24
Linux环境下模拟ftp功能,具体要求如下:
2021-07-29
buck变换器电路中,假如DCM和CCM工作模式临界电容为L1
2021-04-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人