自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

中华田园巨龙

觉得好的话给个赞,也是对博主的支持。

  • 博客(88)
  • 资源 (2)
  • 问答 (3)
  • 收藏
  • 关注

原创 记一次坑爹的ioremap bug

在进行IGH协议栈修改时,遇到这样一个宏定义#define EC_WRITE_U16(DATA, VAL) \ do { \ if( (uint16_t)(DATA) % 2 ==0 ) \ { \ *((uint16_t *) (DATA)) = cpu_to_le16((uint16_t) (VAL)); \ } \ else { \ *((uint8_t *)(DA

2021-12-08 15:57:35 1505

原创 uboot笔记--SF: unrecognized JEDEC id bytes: 20, ba, 20 解决

介绍  在移植开发板过程中,启动过程遇到了一个报错SF: unrecognized JEDEC id bytes: 20, ba, 20  查看说明是由于无法识别flash的ID导致。下面详细说下解决过程。解决步骤(1)添加INFO到driver下面的源文件中首先用source insight查看uboot源代码,发现在driver/mtd/spi/spi_flash.c下面出现的这句报错:是由于识别到的flash ID与系统中的ID不匹配,系统中ID在spi_flash_ids.c这个文

2021-07-06 15:27:55 7368 1

原创 Nor Flash笔记--看一图看懂并学会计算Flash大小

介绍 以华邦256Mb 的W25Q256JV为例。学会看懂以及计算Flash大小说明上图中,整个Flash内的包含关系为Block > Sector > Page可知,一共有512个Block 、 每个Block有16个Sector ,每个Sector有 4K bytes,也就是4096个Page,每个Page是8bit。那么整个Flash大小为512x16x4096x8=268,435,456bit转换为Mbit就是268,435,456 / 1024 /1024 = 2

2021-07-02 11:32:51 7408 3

原创 QT编译BUG解决--error: invalid conversion from ‘Window’ {aka ‘long unsigned int’} to ‘EGLNativeWindowType

问题最近在瑞萨的板子上编译QT,使用的是wayland环境,编译过程中出现如下BUG。compiling camera/qcameraexposure.cpp../../../hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp: In member function ‘void QtWaylandClient::QWaylandXCompositeEGLWindow::createEglSurface()’

2021-06-18 13:57:31 2992

原创 QT笔记--嵌入式QT交叉编译与移植(含OpenGL ES2)

介绍本文记录了QT交叉编译并移植到开发板的过程,并在虚拟机上用QTcreater 开发程序,到开发板上运行。其中重点解决了一些过程中的BUG和坑。准备工作1、一个ubuntu系统的电脑(或虚拟机)2、QT源代码软件包 qt-everywhere-opensource-src-5.9.6.tar.xz3、linaro交叉编译器4、tslib5、sqlite36、开发板根文件系统,其中包含了OpenGL ES3的库文件和头文件。步骤一、交叉编译环境搭建直接参考文章linux_ubuntu_

2021-06-09 10:23:40 7382 1

原创 configure fails with “No package ‘foo‘ found“ - and how to fix it

介绍  在进行本地编译时,.configure阶段经常出现configure fails with "No package ‘foo’ found"类似的错误。原因是pkg-config这个工具,在查找模块时,没有从PKG_CONFIG_PATH这个环境变量的路径下找到foo.pc文件。解决办法1、首先,查看自己的环境变量echo $PKG_CONFIG_PATHPKG_CONFIG_PATH=/usr/lib/pkgconfig/2、查找foo.pc文件sudo find / -name f

2021-05-11 09:55:13 160

原创 Linux驱动笔记--自动加载模块

目的实现开机时自动加载.ko文件模块。步骤1、将所需要加载的.ko文件放到/lib/modules/4.19.xxxx/extera/ 文件夹下。例:mymodule.ko文件2、修改/etc/modules-load.d/modules.conf ,写入自己的模块名称 mymodule (不加.ko)3、修改完成,重启系统用 lsmod查看已加载模块。...

2021-05-08 14:52:02 911

原创 菜鸟笔记--egl: Undefined reference to `gbm_format_get_name‘ when linking with libEGL

介绍在编译weston时,遇到错误egl: Undefined reference to `gbm_format_get_name' when linking with libEGL谷歌了一下也没有结果。后来发现libEGL.so隶属于mesa库文件,在github上查找https://gitlab.freedesktop.org/mesa/mesa.git发现在mesa的源代码里,gbm_format_get_name定义在src/gbm/main/gbm.h里面,最后编译成libgbm.so

2021-04-25 11:58:45 517

原创 解决/usr/include/xlocale.h:27:16: error: redefinition of ‘struct __locale_struct’报错问题

介绍在编译libinput时,出现如下错误In file included from ../src/util-strings.h:43, from ../src/util-strings.c:27:/usr/include/xlocale.h:27:16: error: redefinition of ‘struct __locale_struct’ typedef struct __locale_struct ^~~~~~~~~~~

2021-04-20 10:07:41 2032

转载 转载--解决gedit: symbol lookup error: /home/xxx/libgobject-2.0.so.0: undefined symbol: g_date_copy问题

操作系统:Ubuntu 16.04问题描述:在终端启动gedit命令或者vscode命令报错:gedit: symbol lookup error: /home/chujie/anaconda3/lib/libgobject-2.0.so.0: undefined symbol: g_date_copy问题分析:导致错误的原因应该是gedit依赖libgobject-2.0.so库,而/home/chujie/anaconda3/lib下的这个库版本不对,没有对应的符号。因此解决的思路是从系统中找

2021-04-20 10:01:39 1627

原创 Yocto笔记--使用本地文件进行bitbake do_fetch

介绍上一张讲了如何使用gitee进行bitbake do_fetch,这次说下使用本地文件进行fetch。步骤(1)手动下载所需要的文件(2)将文件放在.bb文件相同目录下用于存放文件的目录。我这里是linux_renesas文件夹下(3)之后修改.bb文件的目录来源说明下:红框内的为之前原作者编写的,在网站上查找文件并核对版本的代码,直接注释掉,改为绿框内手动下载的文件。(4)执行 bitbake linux_renesas -C fetch成功...

2021-03-25 15:00:15 5786 1

原创 Yocto笔记--使用gitee为bitbake do_fetch过程加速

介绍最近在使用瑞萨的MPU时,构建Linux需要使用Yocto的bitbake指令,从国外网站下载Linux内核。但是由于需要访问外网,速度极慢。所以找了个办法修改了内核的获取地址。步骤(1)在进行bitbake linux-renesas -C fetch时,断网,程序会由于报错没有网络连接报错,由此找到指令获取资源的地址所在 git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git(2)由于访问外网速度较慢,我们把外网的资源导入到国内

2021-03-25 12:59:04 2680 1

原创 OpenGL笔记--光照系统

介绍OpenGL引入光照系统后,可以使得三维物体看起来更立体。光照主要由三部分组成:光源,材质和光照环境。结构QT例程//Light{GLfloat light_position[] = {0.0f,0.0f,0.0f,1.0f};GLfloat light_ambient[] = {0.0f,0.0f,0.0f,1.0f};GLfloat light_diffuse[] = {1.0f,1.0f,1.0f,1.0f};GLfloat light_specular[] = {1.0f,1

2021-03-19 14:51:54 226

原创 OpenGL ES3 笔记--编译安装时报错DPVR_WINDOW_SYSTEM解决

使用cmake编译安装OpenGL ES3时,会报错CMake Warning at framework/PVRShell/CMakeLists.txt:177 (message): PVR_WINDOW_SYSTEM (Window System) Variable has been not set for PVRShell Supported windowing systems can be enabled by passing : -DPVR_WINDOW_SYSTEM=NullW

2021-03-16 10:42:38 322

原创 OpenGL笔记--深度测试

介绍  OpenGL画图时,会根据用户的代码顺序执行渲染,这样会有一个隐藏的问题:后画的图形会覆盖掉先画的图形。为了防止这个问题的出现,OpenGL引入了深度缓冲区,,如果当前物体距离观察平面的距离小于缓冲区,就保留图形,如果距离大于缓冲区,就丢弃图形,从而做到近处物体遮盖掉远处物体的效果。这一过程叫做深度测试。代码//预置深度glChearDepth(1.0);//清空缓冲区glClear(GL_DEPTH_BUFFER_BIT);//开启深度测试glEnable(GL_DEPTH_T

2021-03-08 14:36:15 292

原创 QT笔记--交叉编译到arm以及‘feature.sqlite && libs.sqlite3‘ 报错解决

介绍 x86的QT程序想要编译后直接在arm上运行,需要进行交叉编译并移植环境,可以参考下面的文章链接。https://blog.youkuaiyun.com/jzzy_hony/article/details/80883473错误解决当报错ERROR: Feature 'system-sqlite' was enabled, but the pre-condition 'feature.sqlite && libs.sqlite3' failed   是因为在 qt-everywhere

2021-03-08 10:12:49 1011

原创 LinuxCNC笔记--LinuxCNC启动过程

介绍由于LinuxCNC在开发板上启动要进行一堆设置,比较麻烦,今天又想了半天才记起步骤,特此记录一下步骤首先,设置显示屏显示以及分辨率$ startx &$ export DISPLAY=:0$ xhost +$ xrandr --output HDMI-1 --mode 1280x960 --rate 60.00之后,进行LinuxCNC环境配置,不然每次都找不到执行命令$ source ./linuxcnc/scripts/rip-environment然后开始运行$ l

2021-03-03 15:24:11 1766 2

原创 OpenGL笔记--动画显示(基于QT)

介绍  上一篇文章我们在进行透视函数介绍时,使用一篇例程画了三个圆。而动画的原理,就是每秒展示24帧以上的图片,让图像看起来是连续变化的。而我们的操作是,在QT里使用定时器周期性的刷新paintGL。源代码widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QOpenGLWidget>#include <GL/glut.h>#include <QTimer>

2021-03-03 13:46:23 601

原创 OpenGL笔记--透视函数应用及解析(基于QT)

介绍  在使用OpenGL时,涉及到透视函数以及视角的概念,初学时一脸懵逼,下面介绍下函数的概念以及用法。函数glMatrixMode( GLenum mode );glLoadIdentity( void );gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);gluLookAt(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble

2021-03-02 16:43:12 1269

原创 OpenGL笔记--QT使用OpenGL时环境安装

介绍  OpenGL缩写是“开放图形库”,其实它是一组接口(API),用于绘制复杂的三维图像。好处是,使用OpenGL的话,可以使用GPU进行硬件加速。下面介绍一下Linux环境下,在QT中使用OpenGL时,环境配置问题。环境安装安装编译环境$ sudo apt-get install build-essential安装OpenGL library$ sudo apt-get install libgl1-mesa-dev安装OpenGL Utilities$ sudo apt-get

2021-02-26 11:38:09 1355

原创 EtherCAT笔记--Synchronization同步方式(二)

介绍  上一章介绍了Ethercat从站的同步机制以及设置原理,下面介绍下具体的几种同步方式。EtherCAT同步方式分类1、FreeRun  在这个模式下,从站由自己的周期控制去读取数据,既不由SM事件触发,从站之间也没有同步。Free Run synchronization parameter:0x1C32.1 = 00x1C33.1 = 02、SyncManager  在这种模式下,从站周期由事件触发,当主站发送的数据到达从战后,触发SM管理器产生事件,之后进行从站数据处理。S

2021-02-20 14:27:53 5190 3

原创 EtherCAT笔记--Synchronization同步方式(一)

介绍  Ethercat协议有多种同步方式,最常用的有三种:FreeRun,SM同步以及DC同步,下面根据倍福手册加上自己的一点理解介绍一下。EtherCAT从站结构  要理解同步方式,首先要了解下从站结构,如下图所示。  感兴趣的朋友可以找相关资料详细了解,我们这里只针对其中的过程数据进行分析:在数据链路层,过程数据通过SM2,SM3管理器进行管理(SM2收,SM3发),通过PDI(过程数据接口)将缓冲区的数据传到MCU(应用层),以便于应用层MCU进行下一步处理。  那么简要概括下数据的流向

2021-02-20 11:21:17 9669 4

原创 Linux驱动--of_match_ptr 宏定义

在查看设备驱动时,经常看到如下结构。为什么会有一个of_match_ptr呢?查看源代码,在include/linux/of.h里面。#ifdef CONFIG_OF...#define of_match_ptr(_ptr) (_ptr)...#else /* CONFIG_OF */...#define of_match_ptr(_ptr) NULL...#endif /* CONFIG_OF */查看arch/arm64/KCONFIG,可以知道CONFIG_OF默认是打开的

2021-02-19 16:01:01 3750 2

转载 kobject(转载)

核心结论:     1、sys 目录下的层次结构依赖于 kobject.parent ,未指定parent时,默认使用 kobject.kset.kobject 作为 parent,如果都没有,就出现在 /sys 目录下。     2、该 kobject 目录下的属性文件依赖于 kobject.ktype     在linux的驱动表示中,主要有三个基本的结构,分别是kobject...

2021-01-22 14:30:22 319

转载 Linux 设备总线驱动模型(转载)

    尽管LDD3中说对多数程序员掌握设备驱动模型不是必要的,但对于嵌入式Linux的底层程序员而言,对设备驱动模型的学习非常重要。     Linux设备模型的目的:为内核建立一个统一的设备模型,从而又一个对系统结构的一般性抽象描述。换句话说,Linux设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同的属性在内核中实现,而为需要新添加设备或驱动提供一般性的统一接...

2021-01-22 11:38:18 326 1

转载 Linux驱动之Kobject、Kset (二)uevent mdev ktype type(转载)

LDD3中说,Kobject的作用为:     1、sysfs 表述:在 sysfs 中出现的每个对象都对应一个 kobject, 它和内核交互来创建它的可见表述。     2、热插拔事件处理 :kobject 子系统将产生的热插拔事件通知用户空间。     3、数据结构关联:整体来看, 设备模型是一个极端复杂的数据结构,通过其间的大量链接...

2021-01-22 11:35:03 235

转载 Linux设备驱动之Kobject、Kset(转载)

    纠结又纠结,虽然看了一些关于kobject 和 kset 的书与文章,但是对于这两个东西,还是不太明白,又分析了一遍2.6.32.2内核的代码,结合前人的努力,终于有了一点眉目。总结一下,给自己做个笔记,也给初学者一点指引。 LDD3中说,Kobject的作用为:     1、sysfs 表述:在 sysfs 中出现的每个对象都对应一个 kobje...

2021-01-22 11:32:27 611

原创 Linux笔记--程序后台运行办法

1、使用nohup指令nohup cammand 使得程序后台运行,信息打印输出到nohup.out中2、使用ctrl+z使用ctrl+z 程序挂起jobs 查看后台任务号bg %n 后台运行某程序fg %n 前台运行某程序3、使用&符号command & 让程序直接进入后台运行...

2021-01-19 16:54:29 116

原创 DAVE笔记--Micrium uc-Probo Oscilloscope调试

介绍1、DAVE4是英飞凌产品的开发工具,用于代码开发。产生.elf 符号文件,存有程序中的所有存于静态存储区的变量。2、Micrium用于编写UI界面,以及加载波形图,进行实时数据监控。(1)DashboardMicrium中类似于UI界面的开发方式,可以把.elf中的文件加载后添加到控件中。(2)OscilloscopeMicrium中的示波器功能,用于监控波形。Oscilloscope1、首先下载官方用于示波器的代码文件,地址https://www.micrium.com/down

2021-01-18 11:07:19 713

原创 DAVE笔记--Micrium uc-Probo DashBoard调试

介绍1、DAVE4是英飞凌产品的开发工具,用于代码开发。产生.elf 符号文件,存有程序中的所有存于静态存储区的变量。2、Micrium用于编写UI界面,以及加载波形图,进行实时数据监控。(1)DashboardMicrium中类似于UI界面的开发方式,可以把.elf中的文件加载后添加到控件中。(2)OscilloscopeMicrium中的示波器功能,用于监控波形。Dashboard1、首先用DAVE4 编写工程,编写完成后,右键工程->Propertes->C/C++ B

2021-01-18 10:51:19 456 1

原创 QT笔记--QT程序打包发布(linuxdeployqt工具)

介绍本文主要介绍QT程序打包发布,可以在未安装QT的平台上运行,并且解决了一些打包过程中的常见问题。工具linuxdeployqt步骤默认前提:Linux已经安装了QT Creater并且你的界面程序已经编好并可以执行。但是未打包发布。安装linuxdeployqt(本地编译安装)//环境准备sudo apt-get -y install git g++ libgl1-mesa-dev//下载git clone https://github.com/probonopd/linuxde

2020-12-24 15:06:54 3738 13

原创 Linux笔记--信号量

介绍信号量是Linux内部的一种进程同步方式,在多个进程同时执行时,使用信号量可保护临界区代码执行时不会乱序。函数//创建并获取信号量int semget(key_t key, int num_sems, int sem_flags);//改变信号量的值int semop(int sem_id, struct sembuf *sem_opa, size_t num_sem_ops);//控制信号量int semctl(int sem_id, int sem_num, int command,

2020-12-23 15:54:31 85

原创 Linux笔记--man指令(福利)

介绍Linux提供了一个帮助手册,可以供使用者进行查询。格式man 代号 数据1 使用者在shell中可以操作的指令或可执行档2 系統核心可呼叫的函数与工具等3 一些常用的函数(function)与函数库(library),大部分是C的函数库(libc)4 装置档案的说明,通常在/dev下的档案5 设定档或者是某些档案的格式6 游戏(games)7 惯例与协定等,例如Linux档案系统、网络协定、ASCII code等等的說明8 系統管理員可用的管理指令9 跟kernel有关的文

2020-12-22 10:26:16 418

原创 Linux笔记--共享内存

介绍共享内存是一段物理数据区域,可以被映射到多个进程进行直接读写访问。十分方便。使用方式是 创建–映射–直接使用–取消映射–删除共享内存函数//创建并获取共享内存区int shmget(key_t key, size_t size, int shmflg);//映射内存void *shmat(int shmid, const void *shmaddr, int shmflg);//取消映射int shmdt(const void *shmaddr);//共享内存控制--用于删除共享内存

2020-12-22 09:50:33 110 1

原创 Linux笔记--消息队列

介绍  消息队列是Linux进程间通信的一种方式,可以把它理解为超市的储物柜,一个消息队列就是一个储物柜,而对应的类型就是储物柜格子编码。编码对应,就能存取对应的物品(数据);函数//创建以及获取队列 int msgget(key_t key, int msgflg)//发送数据到队列 int msgsnd(int msqid, struct msgbuf *msgp, int msgsz, int msgflg)//从队列接收数据 int msgrcv(int msqid, struct

2020-12-21 14:41:11 111

原创 Linux笔记--信号通信

介绍信号时Linux提供的一种用于进程间通讯的机制,使用方式类似中断或者定时器,都是先绑定再触发。函数//发送信号int kill(pid_t pid,int sig);//绑定信号与处理函数void (*signal(int sig, void (*func)(int)))(int)举例#include <stdio.h>#include <unistd.h>#include <signal.h>#include <stdlib.h>

2020-12-21 11:04:32 108

原创 Linux笔记--进程初识

有这样一段代码,分别在父进程和子进程中返回fork()的返回值,以及当前进程pid和父进程pid#include <stdio.h>#include <unistd.h>#include <signal.h>#include <stdlib.h>int t;pid_t pid;void print(){ printf("Hello\n"); exit(0);}int main(){ pid = fork(); if(pid

2020-12-21 10:45:09 258

转载 转载--Linux信号(signal) 机制分析

转自:https://www.cnblogs.com/hoys/archive/2012/08/19/2646377.htmlLinux信号(signal) 机制分析【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了几个简单的应用实例。【关键字】软中断信号

2020-12-21 09:37:37 273

原创 Linux笔记--有名管道FIFO的使用

有名管道FIFO在系统中创建一个文件用来进行进程间信息交互,可以在非父子进程中交互信息。函数//创建有名管道,文件fifo.tmpmkfifo("fifo.tmp",S_IRWXU);//打开文件,可读可写open("fifo.tmp",O_WRONLY);//写入字符串write(fd, buf, strlen(buf));//打开文件,只读方式open("fifo.tmp",O_RDONLY);//读取文件内容到字符串read(fd, buf, sizeof(buf));//关

2020-12-18 11:08:11 322

原创 Linux笔记--无名管道Pipe通信

管道无名管道可以用来给父进程以及子进程之间通信,使用十分方便。函数//pipe创建管道,fd为一个int类型数组,fd[0]用来读,fd[1]用来写pipe(fd);//将字符串buf写入管道fd,成功则返回0,否则返回-1write(fd[1], buf, strlen(buf));//将管道fd的数据读出到buf,成功则返回0,否则返回-1read(fd[0], buf, sizeof(buf));//关闭端口,fd关闭管道,fd[0]读端口,fd[1]写端口close(fd[

2020-12-18 10:33:49 152

Tutorial, LinuxCNC, IndraDrive and EtherCAT.pdf

linuxcnc-ethercat的HAL文件编写说明,包括对xml文件以及hal文件的编写举例。

2020-09-10

Ethercat协议详解.zip

Ethercat主站协议详解,对于想要开发主站的同学有很大帮助,便于理解主站源代码的相关作用。注:英文文档 1、Ethercat协议原理,应用层,数据链路层,物理层。 2、Ethercat从站寄存器说明 3、ET1200硬件详解

2020-05-12

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除