rootfs移植
编译选项1234567891011121314151617181920212223242526272829301、Location: ->Settings ->vi-style line editor commands# 选中2、Location: ->Settings ->Build static binary (no shared libs)# 这个主要是选择是否动态编译,不能选3、Location: ->Linux Module Utilities ->Simplified module # 不能选4、Location: ->Linux System Utilities ->mdev(16kb) # 下面的全选5、Location: ->Settings -&g ...
mx6ull的uboot--2023版本移植
获取uboot源码https://github.com/nxp-imxnxp官方维护的仓库拿到源码,编译。略
采用和我芯片一样的模板编译编译mx6ull_14x14x_evk_defconfig编译后直接搜索mx6ull_14x14x_evk_defconfig
和之前移植有一些心得arch/arm/dts中,添加自己的设备树文件后,要在这个文件夹下有个makefile中添加上自己的设备树这里改好还要去arch/arm/mach-imx/Kconfig中添加自己的设备树配置项,不然设备树还是编译不到。里面还要配置自己板子的Kconfig
mx6ull的uboot--2024版本移植
存在的问题,uboot的tftp下载速度太慢
移植uboothttps://github.com/nxp-imxnxp官方维护的仓库拿到源码,编译。略
编译。拿到板子, 选一个厂家的板子的配置,编译。
1make mx6ull_14x14_evk_defconfig
编译完成后直接搜索mx6ull_14x14_evk_defconfig
找到配置文件,复制一份。在配置文件中修改:
12345678910# 板子名字CONFIG_TARGET_MX6ULL_NARO=y# CONFIG_LDO_BYPASS_CHECK is not setCONFIG_SYS_I2C_MXC_I2C1=yCONFIG_SYS_I2C_MXC_I2C2=yCONFIG_DM_GPIO=y# 修改设备树CONFIG_DEFAULT_DEVICE_TREE="imx6ull-naro"
这个文件中最终要的就是指定设备树和boot的dtb文件,以及修改设备树名字。剩下的就是根据编译过的文件创建一份,准备自己的修改
下面为编译的脚本
1234567891011121314151617181 ...
uboot移植(uboot2016移植)
移植uboot2016.03版本主要修改:配置文件,板子头文件。驱动文件
注意使用低版本的交叉编译工具,板子运行报错。
1、修改配置文件找到符合自己板子的配置文件–mx6ull_14x14_evk_emmc_deconfig复制一份
1cp mx6ull_14x14_evk_emmc_deconfig mx6ull_naro_emmc_deconfig
文件内容修改如下
12345CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_naro/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"CONFIG_ARM=yCONFIG_ARCH_MX6=yCONFIG_TARGET_MX6ULL_NARO=yCONFIG_CMD_GPIO=y
修改第一条板级配置文件路径,修改第四条编译的选项。
2、修改板子的头文件找到include/configs/mx6ullevk.h,复制一份
1cp mx6ullevk.h mx6ull_naro.h
将开头的编译宏改为
1 ...
uboot移植(uboot2024.4移植)
imx6ull板子为例:下载源码:https://github.com/nxp-imx/uboot-imx/tree/lf_v2024.04注意设备树的语法最后要空行
1、编译拿到源码后,先编译一遍和自己要移植的板子所用的芯片匹配的配置文件。如我这里用的是imx6ull的板子,就需要编译imx6ull的配置文件。编译过后,需要改的目录下生成了一些文件,可以按照文件去判定编译的配置文件是否和自己板子匹配。
12345678910#!/bin/bashpath="arm CROSS_COMPILE=/home/ygc/Desktop/linux-gcc/2021-6ull/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-"make ARCH=arm CROSS_COMPILE=${path} distcleanmake ARCH=arm CROSS_COMPILE=${path} menuconfigmake ARC ...
lcd多点触摸屏
lcd多点触摸屏linux内核中分为两类Type A:适用于触摸点不能被区分或者追踪,此类型的设备上报原始数据(此类型在实际使用中非常少!)。Type B:适用于有硬件追踪并能区分触摸点的触摸设备,此类型设备通过 slot 更新某一个触摸点的信息,FT5426 就属于此类型,一般的多点电容触摸屏 IC 都有此能力。触摸点的信息通过一系列的 ABS_MT 事件(有的资料也叫消息)上报给 linux 内核,只有ABS_MT 事件是用于多点触摸的。
lcd
lcdlcd画面显示是由一个个像素点发光展示,如800X480的屏幕,那么有800480=307200个像素点,每个像素点有RGB三个颜色,那么有3072003=921600字节,那么lcd的显存大小为921600字节RGB一般都是888或者565,如果有透明度的颜色,那么就是8888,一般称为真彩色
裸机中我们可以随意的分配显存,但是在 Linux 系统中内存的管理很严格,显存是需要申请的,不是想用就能用的。而且因为虚拟内存的存在,驱动程序设置的显存和应用程序访问的显存要是同一片物理内存通过操作显存来操作操作lcd
framebufferframebuffer(帧缓冲)是Linux系统中一个重要的图形子系统组件,是应用程序操作显存的一种机制。而操作显存可以操作lcd主要作用如下:
抽象硬件显示接口
framebuffer为应用程序提供了一个统一的显示接口,屏蔽了底层不同显示硬件的差异
应用程序无需关心具体的LCD控制器型号和硬件细节
内存映射机制
将显存映射到应用程序的虚拟地址空间
允许应用程序直接通过内存读写操作来控制屏幕显示内容
保证驱动程序和应用程 ...
ubuntu
文件目录linux目录从/开始/bin 大部分系统的命令/boot 引导文件,启动相关的目录/dev 设备文件目录,Linux下一切设备皆文件/etc:系统配置文件/home 用户目录,一个用户对应一个文件夹/lib 库文件/lib64 64位库文件/libx32 32位库文件/lost+found 文件系统错误恢复文件/media 媒体文件目录/mnt 挂载目录/opt 第三方软件安装目录/proc 虚拟文件系统,存放进程和内核信息/root 超级用户目录/run 运行目录/sbin 超级用户可执行文件/srv 服务器数据目录/sys 虚拟文件系统,存放硬件信息/tmp 临时文件目录/usr 用户程序目录/var 变量文件目录
1 、ubuntu 24.041-1、输入完密码或者安装完系统后黑屏两步:vmware关闭3D加速、配置grub文件
123456vim /e ...
应用代码库
调试篇1、log彩色打印命令
我们常用的printf函数输出来的颜色是终端的配色。
如果想要输出不同的颜色进行区分,
就需要用到printf的控制命令:\033[m。
控制命令以\033[开头,
以m结尾,
而中间则是属性码,
属性代码之间使用;分隔,
如\033[1;34;42m。而属性代码的含义见下面的表格
示例:
12345678910111213141516171819202122232425262728293031323334353637383940414243#include <stdio.h>void printf_red(const char *s){ printf("\033[0m\033[1;31m%s\033[0m", s);}void printf_green(const char *s){ printf("\033[0m\033[1;32m%s\033[0m", s);}void printf_yellow(const char *s){ ...
技巧类
linux命令类和shell技巧类1、dd命令可以拷贝一切,内存,磁盘,当设备出现问题,可以通过dd命令将内存数据拷贝出,无敌。
2、软连接自己想要的软件直接到官网下载,或者交叉编译器可以直接使用此方法 。
1ln -s 【目标】 【链接到目标地址】
都是绝对地址。
另一种是设置环境变量的方式,设置的地址在/etc/profile
类似:export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
/usr/local/bin/放置了一些软件的启动地址。~/bashrc放置的是用户的一些个性化设置,也可以将环境变量放到里面。
bashrc的作用:1、可以在利用命名函数alias定制需要的指令;2、设定环境路径;3、提示符设置。
3、vim中w ! sudo tee %%为当前文件,上面的作用主要是缺少sudo时,可以直接采用上面命令保存vim,避免尴尬。
4、grep -nR可以查看引用的字符串5、find ./ ...









