
Linux
Car12
嵌入式开发,爱好者
展开
-
nsmod: ERROR: could not insert module hello_world.ko: Invalid module format
出现问题原因是:内核编译使用的交叉编译器和模块使用的交叉编译器版本不一致原创 2021-12-25 20:42:17 · 785 阅读 · 0 评论 -
IEEE 754 的标准对浮点数的处理
参考文章:https://blog.youkuaiyun.com/weixin_42066185/article/details/88559936作者在工作中现在就面临这个浮点数通过modbus协议向上位机传输的问题的存在,遇到的是,我们应该怎么样合适的处理这个float 4个bytes 的数据,下面总结一下 个人的调研的结果:通过网上的调研结果有下面的两种的解决的方案:方案一:通过将你所得到的带小数的放大一定的倍数,都变成整数进行处理,例如:3.24 --放大100 变成 324 ,然后...原创 2021-08-04 17:17:56 · 545 阅读 · 0 评论 -
Ubuntu 18.4 镜像
Ubuntu 镜像使用帮助Ubuntu 的软件源配置文件是 /etc/apt/sources.list。将系统自带的该文件做个备份,将该文件替换为下面内容,即可使用 TUNA 的软件源镜像。选择你的ubuntu版本: 18.4清华镜像如下# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiv原创 2021-08-03 19:29:11 · 302 阅读 · 0 评论 -
linux 串口命令
Linux下有一个专门的stty命令可以查看或设置终端的参数#在开发板的终端执行如下命令 #它会输出当前终端的参数 stty #查看ttymxc0设备参数 stty -F /dev/ttymxc0#设置通讯速率,其中ispeed为输入速率,ospeed为输出速率stty -F /dev/ttymxc0 ispeed 9600 ospeed 9600#使用echo命令向终端设备文件写入字符串"board"、"embedfire"echo board >...原创 2020-11-01 10:02:32 · 2023 阅读 · 0 评论 -
嵌入式串口打印信息重定向到当前终端界面
转至 https://blog.youkuaiyun.com/wuquan_1230/article/details/105782687概述在嵌入式Linux系统中,有时通过远程(telnet或者ssh)登录到现场设备,想看程序的实时打印的调试信息,需要将输出到串口的调试信息重定向到当前登录的终端界面上。也可以将程序重新启动到当前终端界面,但是在程序出现问题时,如果重启程序,可能会破坏了问题现场,再查找问题就不好查找了。下面是实现的代码,可以将输出到串口的日志信息,重定向到当前的telnet或者ssh界转载 2020-09-09 10:23:08 · 743 阅读 · 1 评论 -
vsftpd 启动不了vsftp 报错:config file not owned by correct useror not a file
将配置文件执行命令chown root:root vsftpd.confbuildroot 添加ssh服务ssh配置: etc/ssh/sshd_configPermitRootLogin yesPermitEmptyPasswords yeshttps://www.cnblogs.com/chenfulin5/p/6062830.htmlhttps://developer.aliyun.com/ask/236024?spm=a2c6h.13524658...原创 2020-07-27 15:44:29 · 3126 阅读 · 0 评论 -
MQTT 连接 阿里云物联网十六进制数据分析笔记
相关数据{ "ProductKey": "a1L1qdcqmnB", "DeviceName": "test2", "DeviceSecret": "lPW1APSJUmLVp4ekeQYmddkKiVGgDCeY"}参考文章:https://www.cnblogs.com/mhtc/p/11131455.html原创 2020-06-23 17:49:56 · 1730 阅读 · 0 评论 -
MQTT onenet 使用记录
onnet产品,设备创建教程设备ID 606233475 00 09 36 30 36 32 33 33 34 37 35产品ID 356410 00 06 33 35 36 34 31 30key chejia12 00 08 63 68 65 6A 69 61 31 3210 27 00 04 4D 51 54 54 04 C2 00 7...原创 2020-06-23 09:27:40 · 559 阅读 · 2 评论 -
sqlite3 交叉编译出现configure: error: C compiler cannot create executables
解决办法是:在配置交叉编译器的条件下,不要复制,手动输入就可以解决原创 2020-05-22 13:30:20 · 1067 阅读 · 0 评论 -
arm linux 交叉编译boost库
测试编译boost_1.48_0编译时thread编译失败测试编译boost_1.60_0编译时thread编译成功编译步骤:1、运行 ./bootstrap.sh 此时形成bjam文件和project-config.jam2、编辑project-config.jam,仅修改usinggcc这行。if ! gcc in [ feature.values <toolset> ]{ using gcc : arm : /usr/local/arm/...原创 2020-05-12 09:16:49 · 555 阅读 · 0 评论 -
Linux驱动学习2
---------------------------等待事件------------------------------- wait_event(wq, condition) 等待以 wq 为等待队列头的等待队列被唤醒,前 提是 condition 条件必须满足(为真),否则一直阻 塞 。 此 函 数 会 将 进 程 设 置 为 TASK_UNIN...原创 2020-03-03 16:59:39 · 287 阅读 · 0 评论 -
Linux设备树相关
设备树在文件系统中的体现: 在/proc/device-tree 设备节点: struct device_node { const char *name; /* 节点名字 */ const char *type; /* 设备类型 */ phandle phandle; const...原创 2020-02-29 17:46:06 · 281 阅读 · 0 评论 -
设备树语法和多任务处理
Dts语法: 头文件包含方法: #include<xxx.h> #include"xxx.dtsi" #include"xx.dts" dtsi主要用于描述soc硬件信息; 设备节点表示: label :node_name@unit_addr dts属性: 1、compati...原创 2020-02-26 16:02:00 · 310 阅读 · 0 评论 -
Linux字符驱动
驱动开发注册模块加载和卸载函数:module_init(xxx_init);module_exit(xxx_exit);模块加载命令insmod xx.komodprobe xx.ko模块卸载:rmmode xx.komodprobe -r xx.ko字符设备注册和注销:static inline int register_ch...原创 2020-02-21 17:24:07 · 266 阅读 · 0 评论 -
fork() 和 vfork()
fork() 和 vfork() 的最大差别 vfork()保证子进程先运行,在子进程调用exit()或exec() 之后父进程才可能被调度运行。子进程返回 0父进程返回原创 2018-03-29 10:19:22 · 212 阅读 · 0 评论 -
epoll详解
欢迎转载,转载请注明原文地址:http://blog.youkuaiyun.com/majianfei1023/article/details/45772269一.基本概念:1.epoll是什么:epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CP转载 2017-07-06 12:29:15 · 452 阅读 · 0 评论 -
Linux环境编译动态库和静态库总结
首先总结静态库的编译步骤。1 先基于.cpp或者.c文件生成对应的.o文件2将几个.o文件 使用ar -cr命令 生成libname.a文件libname.a 为静态库, name 为静态库的名字,可以根据模块功能命名。 举个例子在当前目录下,有一个mymethod.h文件 在mymethod.cpp里实现这两个函数 在当前目录下有一个main.转载 2017-07-14 17:01:23 · 268 阅读 · 0 评论 -
exec函数族
#include extern char **environ;int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execle(const char *path, const char *arg,..., char * con原创 2016-09-23 14:20:09 · 264 阅读 · 0 评论 -
从文件中读取结构体变量的数据读取和写入结构体数据到文件
#include size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);struct A{ int a; int b; c原创 2016-09-23 17:26:32 · 9602 阅读 · 0 评论 -
注册终止处理函数atexit()
#includeatexit(void (*fun)(void)) 注册终止处理函数#include#includeusing namespace std;void exit1(void){ cout}void exit2(void){ cout}typedef void (*fp)(void);void register原创 2016-09-22 11:50:18 · 325 阅读 · 0 评论 -
环境变量environ
void getenviron(void){ extern char ** environ; char **pe= environ; while(*pe != NULL) { cout<<*pe<<endl; pe++; }}获取环境变量的值getenv()设置环境变量putenv() ;seten原创 2016-09-22 11:55:51 · 472 阅读 · 0 评论 -
Linux函数之间的goto 跳转
实现函数:setjmp(jmp_buf jmp) 第一次成功返回0 ,第一次以后返回longjmp() 的val值longjmp(jmp_buf jmp, int val )#include #include using namespace std; jmp_buf jmp; void jump2(int x); void jump3(int x);void原创 2016-09-22 13:34:19 · 4787 阅读 · 0 评论 -
fork() 和 vfork()
fork() 和 vfork() 的最大差别 vfork()保证子进程先运行,在子进程调用exit()或exec() 之后父进程才可能被调度运行。子进程返回 0父进程返回子进程ID父进程和子进程会共享文件表项,公用文件的当前偏移量和V节点//vfork#include#includevoid forkTest(void){ int fd = open("a.txt"原创 2016-09-22 15:43:28 · 275 阅读 · 0 评论 -
信号signal()、alarm()、信号集函数、sigprocmask()
信号处理方式: 忽略 :但是SIGKEILL 和 SIGSTOP 不可以忽略; 捕捉信号: 但是不能捕捉 SIGKEILL 和 SIGSTOP ; 执行默认操作:core文件: 表示在进程的当前工作目录core文件中复制了该进程的内存映象;函数signal : 最好使用sigaction()函数代替signal: #include原创 2016-10-11 17:02:35 · 645 阅读 · 0 评论 -
信号signal()、alarm()、信号集函数、sigprocmask()
信号处理方式: 忽略 :但是SIGKEILL 和 SIGSTOP 不可以忽略; 捕捉信号: 但是不能捕捉 SIGKEILL 和 SIGSTOP ; 执行默认操作:core文件: 表示在进程的当前工作目录core文件中复制了该进程的内存映象;函数signal : 最好使用sigaction()函数代替signal: #include原创 2016-10-11 17:05:39 · 346 阅读 · 0 评论 -
标准文件I/O操作
FILE 对象包含信息 文件描述符 该流的缓冲区 缓冲区长度 当前缓冲区的字节数 出错标志 #include 改变流的定向int fwide(FILE *stream, int mode); mode: mode>0 宽字节流、 mode返回值: > 0 宽字节流、原创 2016-09-27 09:48:21 · 343 阅读 · 0 评论 -
进程的优先级设置与获取,进程时间
进程的优先级设置与获取:值越小优先级越高 #include #include int niece(int add) int getpriority(int which, id_t who); int setpriority(int which, id_t who, int prio); which:原创 2016-09-27 16:00:44 · 739 阅读 · 0 评论 -
进程的优先级设置与获取,进程时间
进程的优先级设置与获取:值越小优先级越高 #include #include int niece(int add) int getpriority(int which, id_t who); int setpriority(int which, id_t who, int prio); which:原创 2016-09-28 08:32:21 · 1478 阅读 · 0 评论 -
STDIN_FILENO的作用及与stdin 的区别
1.STDIN_FILENO的作用STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。2.区别1)数据类型不一致:stdin类型为转载 2016-09-30 15:23:49 · 252 阅读 · 0 评论 -
Liunx静态库和动态库
对Linux环境动态库和静态库的一些基础知识做一些总结,首先总结静态库的编译步骤。1 先基于.cpp或者.c文件生成对应的.o文件2将几个.o文件 使用ar -cr命令 生成libname.a文件libname.a 为静态库, name 为静态库的名字,可以根据模块功能命名。 举个例子在当前目录下,有一个mymethod.h文件转载 2017-07-14 17:41:45 · 274 阅读 · 0 评论 -
wait() 和 waitpid()
wait() 和waipid()子进程比父进程先结束执行,则子进程将成为僵死进程父进程比子进程先结束,则子进程将成为孤儿进程,他将有init (pid =1)收养;主动调用wait() 和 waitpid() 的进程A可能发生什么? 如果他的子进程还在运行,则A进程阻塞 如果他的子进程已经停止,则正在等待的进程A会立即返回, 如果进程A没有子进程,原创 2016-09-23 09:45:13 · 369 阅读 · 0 评论