linux c
文章平均质量分 67
大智兄
嵌入式开发,讲师
展开
-
116.龙芯2k1000-pmon(15)- 只修改env部分
既然前面已经研究了gzrom-dtb.bin的生成从这期开始,将研究如何通过linux下的app修改gzrom.bin在flash中的内容。本期第一步,既然要修改env的字节部分,那首先得有一个自己要有env.bin,所以就要想办法生成一个这个文件包含了自己想要的环境变量,但是又不想更新pmon的全部。这里有风险:会造成存档pmon与实际运行的内容不一致的情况!!!(先忽略)原创 2024-03-05 16:47:49 · 884 阅读 · 0 评论 -
同名函数惹的祸
4.再次确认段错误的问题,发现msgq_send这个地址比较小,与main是比较接近的,而我的库函数(drvCoreBoardInit)的地址是大很多的,明显msgq_send不是我的库函数提供的。一看,果然是我的msgq_send出现了问题,我看了一下我的代码,这是系统提供的消息队列,怎么就出现了段错误?1. 因工作需要,我在项目中要提供一套api给客户使用,我封装为libxxx.so的形式,客户使用我提供的接口。十一期间,客户找我,给我截图说是,我提供的库函数初始化函数出现了段错误。原创 2022-10-09 14:57:59 · 379 阅读 · 0 评论 -
Linux下PIPE和FORK使用需要注意的一个问题
1. linux系统,有父子进程,本案例中,一个父进程,三个子进程。2.子进程都要使用管道与父进程通信,父进程收到的终端数据,分别通过管道(pipe)发送给3个子进程,子进程(3个)收到数据后,通过(另一个)管道(pipe)将数据(原封)发送给父进程,父进程读出管道的数据,打印到终端。3.正常情况下,管道应该是6个,父进程与3个子进程之间分别有两个管道。原创 2022-10-07 10:02:27 · 760 阅读 · 0 评论 -
linux进程间通信之msgq
这次项目中关于进程间通信的部分我一般都采用了msgq,一般信息数据量都不是很大。原创 2022-09-22 17:17:13 · 1387 阅读 · 0 评论 -
linux c 自定义记录日志文件
** 后台服务程序日志文件。* 1. 只需要调用log_init()即可* 2. 注意日志写的路径的权限问题* */使用线程和定时器完成。原创 2022-09-22 16:15:28 · 1294 阅读 · 0 评论 -
在Linux下如何实现禁止运行该程序多次?
5.2 server端,收到api的含有pid消息后,首先判断全局变量api_pid记录的进程在系统中是否存在,不存在则记录下刚刚收到的pid数据,并且给api返回0,表示允许刚刚的api进程启动。4. 使用文件锁(临时文件,空文件)的方式,实验失败,比如意外终止进程(ctrl+c)的情况下,文件锁似乎就没有成功解锁,导致想再次运行的时候就无法启动,总是提示已存在进程,实际是无法给对应的文件加锁而导致的,处理的方法则必须手动删除上锁文件,才能再次运行该程序。判断系统中是否存在某个pid的进程。...原创 2022-08-30 16:30:36 · 1047 阅读 · 0 评论 -
c语言中关于进制的一二疑惑
初学计算机的时候,总会接触到进制这个东西,然而各种进制转换又让人有些云里雾里。这里我的题目是c语言中的进制,是因为其他语言不熟。本文对于进制讲解以下几点:(高手请略过)1. 计算机中有进制吗?2.什么时候需要用进制这东西?(我只简单说说我的理解)原创 2022-08-24 18:08:31 · 287 阅读 · 2 评论 -
linuxGPIO的设置-使用LED的驱动
因为我的引脚控制比较简单,只需要固定的输出高低电平就可以了,也没有其他需求。所以就搭上leds-gpio的驱动吧,自己就不用写了。首先,内核中增加leds-gpio的驱动。根据Kconfig和Make file 和帮助信息,可以定位到图中的选项。第一步先定位到led的驱动是哪一个第二步,查看该目录中的Makefilevim drivers/leds/Makefile找到这个相关的配置项第三步,make menuconfig的时候找到对应的CONFIG就行,右斜杆,弹出原创 2022-05-23 11:12:12 · 1758 阅读 · 2 评论 -
linux下GPIO的设置-调试
一般linux都有相关GPIO的驱动,做个简单备用吧。这次我要控制的ls2k1000的gpio48,49,50,51.设置为输出模式,输出一个固定的电平,所以这里先借助/sys/class/gpio/的方法调试一下。首先在内核需要开启这个调试方法。在 device driver --> gpio suport 选项中,选中指定的那个选项。重新编译内核,更新新的内核。出现这个目录才能正常操作。以下改为sh脚本: 设置为输出,然后设置为某个电平输出。需要root原创 2022-05-23 09:09:29 · 2804 阅读 · 0 评论 -
tvp5150的iic配置-应用程序实现。
其实内核是支持tvp5150的驱动,但是驱动安装后,又不知道如何进行iic控制。(才疏学浅,被自己的浅薄给难住了),然后换了思路,要不用应用层来控制得了,反正就是iic的设置。平台:ls2k1000系统:linux3.10+中标文件系统。连接:iic0tvp的iic设备地址是0xBA或者0xB8,这里根据原理图,确认是0xBA(D7引脚接上拉)程序运行的方法:./tvp5150_test w 用于配置指定寄存器(默认使用tvp5150_reg.cfg)./tvp5150_te原创 2022-05-18 10:08:41 · 925 阅读 · 0 评论 -
ls2k1000-调试pcie ---解决访问io空间错误的问题
平台 ls2k1000系统:linux3.10 + 中标麒麟文件系统。驱动是 ch368的pcie转localbus,官网上下的。测试程序,在源代码中包含了。一、简单介绍一下情况1.驱动能安装成功2.用dome程序访问内存空间正常:3.但是测试程序访问io空间就是出错,直接就挂了,需要重启。4. 完整的错误信息如下: 其中这个测试菜单选择1This is main menu listed:1:for IO port2:...原创 2022-05-10 17:33:22 · 2109 阅读 · 0 评论 -
s5pv210-nand-驱动-3(不知道能不能用)
驱动原文 s5pv210-nand-control.c/* * Copyright © 2004-2008 Simtec Electronics * http://armlinux.simtec.co.uk/ * Ben Dooks <ben@simtec.co.uk> * * Samsung S3C2410/S3C2440/S3C2412 NAND driver * * This program is free software; you can redistribute原创 2022-01-07 21:10:35 · 479 阅读 · 0 评论 -
s5pv210-nand-驱动-1
还是不是很懂,抄了很多,还不知道对没对。反正现在驱动是识别到了。内核:linux4.19.222编译器:gcc-7.5.0先贴个图吧。目前使用的还是nfs文件系统,ubuntu16.04原创 2022-01-07 21:05:55 · 199 阅读 · 0 评论 -
11-15ov9281双摄-应用运行命令
1.单摄像头显示:gst-launch-1.0 -vvv v4l2src device=/dev/video5 ! videoconvert ! video/x-raw,format=NV12,width=640,height=400 ! kmssinkgst-launch-1.0 -vvv v4l2src device=/dev/video0 ! videoconvert ! video/x-raw,format=NV12,width=640,height=400 ! kmssink/dev原创 2021-11-15 19:21:50 · 772 阅读 · 0 评论 -
11-15.ov9281双摄-rk3399pro-续集
3399pro搭载的双摄ov9281,一直有个问题,就是第一次上电启动后,就会有一个1-2分钟的自动调整过程。调整的过程比较卡顿,似乎是在调整曝光时间等一些参数。这就有点影响使用了。但是第二次启动应用是没这个问题了(不是reboot系统,只是重新启动应用)。今天追查了一下,发现是v4l2驱动在进行参数调整加几条打印语句:static int ov9281_set_ctrl(struct v4l2_ctrl *ctrl){ struct ov9281 *ov9281 = contai原创 2021-11-15 23:15:00 · 1636 阅读 · 5 评论 -
其实你还不懂计算机和c语言(1)
这里没有批评,只有一起来进步哈。我写出来的目的,还是希望大家一起学习一起进步。最近手里又换了一个项目,一个Qt的,本质上还是一段c代码吧。首先,有图有真相。这段代码只是其中一个小的数据处理部分,拿过来当个典型处理吧。1.1 解释一下代码的功能如果你一眼能看出来最好。看出来的直接跳过吧。第一张图片:这一段是一个缓存(是can收到的数据),然后对这个缓存的数据做解析,解析出来的是个温度值,看代码的意思呢,是有一位小数。这个温度值保存在两个字节中,发过来的时候是整数,就是乘1.原创 2021-08-23 11:41:06 · 117 阅读 · 0 评论 -
linux c posix 线程退出问题
1. linux 下 pthread的线程编程中,没有主线程,子线程这样的概念。都是同等的线程,不像进程存在父子关系。2.运行了main函数的线程,退出时,会导致子线程结束。是因为调用了return或者exit,导致进程结束3.运行了main函数的线程,可以调用pthread_exit退出,并不会导致子线程结束4.运行了main函数的线程,可以被其他线程结束运行(如果是可结束的属性下),pthread_cancel,子线程同样可以继续运行。5.线程都可以设置不可被(其他线原创 2021-08-06 15:43:58 · 295 阅读 · 0 评论 -
c运算符优先级总结-你不得不搞明白的问题
学习c语言,运算符算是c语言的一个基础知识,运算符的两个特征就是重点的重点了,其一就是优先级,其二就是结合性,这两个特征也算是笔试的基础题目。 c语言的优先级有很多,我觉得可以先分成两大类,一类是单目运算,一类是双目运算(其中包含一个三目运算)。 单目运算:顾名思义,就是运算只需要一个变量,如c++,*c等(c表示变量名)。原创 2021-07-22 09:34:57 · 3790 阅读 · 1 评论 -
宏定义正确处理a++
今天c语言有一个题目,是宏实现一个数的平方,但是要正确处理a++这样的参数。这个我们正常使用还是不会有什么问题,但是一旦参数改为a++的话,这时候就不会得到跟我们理论的正确答案了。#define SOMETHING(b) ((b)*(b))int main(void){ int a=5; int b; b= SOMETHING (a)*8; printf("a = ...原创 2020-02-10 21:21:07 · 490 阅读 · 0 评论 -
arm 汇编伪指令与位置相关代码
arm汇编指令位置无关码 位置相关和位置无关主要体现在程序运行时的地址和编译时指定的代码段的地址是否为同一地址 编译环境:ADS1.2 开发板:GEC210(s5pv210soc) 程序运行方式:使用uboot的tftp下载bin文件到内存(0x30008000),然后运行 汇编代码如下:原创 2017-05-20 12:31:49 · 583 阅读 · 0 评论 -
c运算符优先级总结
学习c语言,运算符算是c语言的一个基础知识,运算符的两个特征就是重点的重点了,其一就是优先级,其二就是结合性,这两个特征也算是笔试的基础题目。 c语言的优先级有很多,我觉得可以先分成两大类,一类是单目运算,一类是双目运算(其中包含一个三目运算)。 单目运算:顾名思义,就是运算只需要一个变量,如c++,*c等(c表示变量名)。原创 2016-12-17 21:00:56 · 959 阅读 · 0 评论