Linux C
文章平均质量分 62
Linux编程笔记
zhang-ge
这个作者很懒,什么都没留下…
展开
-
Linux中PATH、LIBRARY_PATH、LD_LIBRARY_PATH的作用
当编译源代码时,编译器会在这些目录中查找指定的库文件,以便将其链接到可执行文件中。变量中追加 /compile_lib_path/lib 目录,以后编译程序时,编译器将会在 /compile_lib_path/lib 目录中进行库文件的搜索。变量中追加 /ld_path/bin 目录,以后运行程序时,动态链接器将会在 /ld_path/bin 目录中进行共享库的搜索。当运行一个命令时,操作系统会在这些目录中查找相应的可执行文件,并在找到后执行它。此命令将把/exe_path/bin目录添加到系统的。原创 2024-03-08 14:35:34 · 1144 阅读 · 0 评论 -
Linux C编程基础:获取时间
对于linux下的编程,无论是用户态还是内核态,时间获取都是经常需要使用到的。以下分别从用户态和内核态整理了几个常用的时间获取接口,供编写代码时快速查阅。原创 2023-06-11 12:46:51 · 9953 阅读 · 1 评论 -
Linux下mmap驱动实现
Linux下mmap驱动实现原创 2023-04-11 12:41:56 · 1075 阅读 · 0 评论 -
linux 申请内存函数,request_mem_region 申请内存函数讲解
linux 申请内存函数,request_mem_region 申请内存函数讲解转载 2023-03-08 15:41:52 · 739 阅读 · 0 评论 -
linux内存屏障浅析
Linux内存屏障简要分析。转载 2023-03-02 09:40:33 · 275 阅读 · 0 评论 -
linux kernel中list的使用整理
linux list使用方法总结原创 2022-12-14 10:54:25 · 320 阅读 · 0 评论 -
嵌入式linux开发常用操作
嵌入式linux开发常用命令1.ubuntu交叉编译器环境变量设置vim /etc/profileexport PATH=$PATH:/usr/local/arm/gcc-arm-none-eabi-9-2019-q4-major/binexport PATH=$PATH:/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin2.使用grep搜索指定字符串grep "字符串" * -nR...原创 2020-11-09 09:56:46 · 825 阅读 · 0 评论 -
devm_xxx机制
前言 devm是内核提供的基础机制,用于方便驱动开发者所分配资源的自动回收。参考内核文档devres.txt。总的来说,就是驱动开发者只需要调用这类接口分配期望的资源,不用关心释放问题。这些资源的释放会在device对象销毁时自动释放。devres使用 不同的内核模块提供了对应的devm_xxx接口,如下(不仅仅这些):MEM devm_kmalloc() devm_kzalloc() devm_kcalloc() devm_kmalloc_array() dev...原创 2020-11-24 19:00:45 · 1460 阅读 · 0 评论 -
git获取指定版本的linux内核源码
git获取指定版本的linux内核源码Linux内核版本说明linux内核源码地址:https://www.kernel.org.打开后如下图所示:mainline:代表主线版本。stable:代表稳定版本。longterm:代表长期支持版本。我们选择stable版本。在stable这一行中点击[browse],如下图所示。然后在菜单选择tree, switch框中将会显示出...原创 2019-07-12 01:01:00 · 3467 阅读 · 0 评论 -
LCD驱动(FrameBuffer)分析
【驱动】LCD驱动(FrameBuffer)分析 背景知识在多媒体的推动下,彩色LCD越来越多地应用到嵌入式系统中,PDA和手机等大多都采用LCD作为显示器材,因此LCD的应用很有实际意义!LCD工作的硬件需求:要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C24...转载 2020-11-24 11:35:54 · 641 阅读 · 0 评论 -
使用eclipse与jLink V8调试exynos 4412 u-boot
使用eclipse与jLink V8调试exynos 4412 u-boot 首先说一下我实验室的网络环境:一台搭载ubuntu系统的公用Linux服务器,数台客户机使用ssh连接到服务器。我个人的开发环境:使用Mac OS X系统,ssh远程连接Linux服务器。USB转串连接4412开发板,USB经jLink连接开发板,暂时别无其它线缆连接。 这里我就以Mac系统为例,说一下软硬件环境搭建,windows与Linux下搭建方法基本相同。 首先准备软...转载 2020-11-25 16:58:17 · 318 阅读 · 0 评论 -
分析Linux上程序执行时,是怎么跳到main函数的
main()函数,想必大家都不陌生了,从刚开始写程序的时候,大家便开始写main(),我们都知道main是程序的入口。那main作为一个函数,又是谁调用的它,它是怎么被调用的,返回给谁,返回的又是什么?这次我们来探讨一下这个问题。1. main()函数的形式先来说说main函数的定义,较早开始写C程序的肯定...转载 2018-10-16 14:29:33 · 1351 阅读 · 0 评论 -
linux内核调试和性能优化
Linux内核调试和性能优化原创 2021-06-14 11:05:15 · 3909 阅读 · 1 评论 -
cmake常用配置
1.设置编译参数#THIS FILE IS AUTO GENERATED FROM THE TEMPLATE! DO NOT CHANGE!set(CMAKE_SYSTEM_NAME Generic)set(CMAKE_SYSTEM_VERSION 1)cmake_minimum_required(VERSION 3.17) # specify cross compilers and toolsset(CMAKE_C_COMPILER arm-none-eabi-gcc)set(CMAKE_原创 2021-06-14 12:39:44 · 1090 阅读 · 2 评论 -
rootfs.img文件扩容
使用qemu模拟Ubuntu时,如果rootfs.img刚开始制作的时候并不是太大,用着用着会发现rootfs.img的空间不够用的情况,可以采用下面的方法对img文件进行扩容。1.使用下面命令给img文件追加空间#给img文件追加5G空间qemu-img resize rootfs.img +5G2.扩容文件系统分区分区e2fsck -f rootfs.imgresize2fs rootfs.img上面两部执行完后即完成了rootfs.img的扩容,进入系统后就会发现空间变大了。附录:原创 2021-06-15 22:42:43 · 2953 阅读 · 1 评论 -
Linux用户空间操作gpio
1.sysfs读写IO 最常见的读写GPIO方式,通过操作/sys/class/gpio目录下的export、unexport、gpio{N}/direction, gpio{N}/value等文件来实现。不过此方法已过 时,已被Linux官方抛弃。 以nvidia NX的核心板为例:1.1.内核源码GPIO相关#define TEGRA194_MAIN_GPIO_PORT_A 0#define TEGRA194_MAIN_GPIO_PORT_B 1#define TEGRA194_MA原创 2021-02-08 15:58:26 · 901 阅读 · 0 评论 -
使用宏扩展打印函数
开发过程中为了便于移植,通常需要对打印函数进行重命名,以TI的CCS6编译器为例,可采用如下方法:1、CCS6开启VA_ARGS__宏的支持:CCS Build --> C6000 Compiler --> Advanced Options --> Language Options --> Language Mode --> Relaxed paring(non-strict ANSI)2、使用宏重命名打印函数extern void my_print(fmt,原创 2021-06-02 21:05:39 · 236 阅读 · 0 评论