Linux——linux系统移植

创建VSCode工程

1、将NXP官方的linux内核拷贝到Ubuntu

2、解压缩tar -vxjf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

NXP官方开发板Linux内核编译

1、将.vscode文件夹复制到NXP官网linux工程中,屏蔽一些不需要的文件

2、编译NXP官方EVK开发板对应的Linux系统,默认配置文件存放路径arch/arm/configs

编写shell脚本

#!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_mfg_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j12

使用命令给予可执行权限

chmod +x imx6ull_14x14_evk.sh

执行编译

如果出现下面的错误

scripts/dtc/dtc-parser.tab.o:(.bss+0x50): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status

原因是gcc版本过高导致,解决方法如下:

修改scripts/dtc目录下的dtc-lexer.lex.c_shipped文件中找到
YYLTYPE yyloc这一行,在640行,在之前面加上extern 
保存退出,
make 编译 

最终编译出zImage和imx6ull-14x14-evk-emmc.dtb,imx6ull-14x14-evk.dtb

将zImage和imx6ull-14x14-evk-emmc.dtb拷贝到tftpboot目录下

cp arch/arm/boot/zImage /home/zzs/linux/tftpboot/ -f
cp arch/arm/boot/dts/imx6ull-14x14-evk-emmc.dtb /home/zzs/linux/tftpboot/ -f

在Uboot命令行中通过tftp将zImage和imx6ull-14x14-evk-emmc.dtb拷贝到DRAM中

tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-evk-emmc.dtb

在linux中添加自己的开发板

添加imx6ull_alientek_emmc_defconfig默认配置文件

复制NXP官方的arch/arm/configs/defconfig文件,修改成我们自己的默认配置文件名

cp imx_v7_mfg_defconfig imx_alientek_emmc_defconfig

添加imx6ull-alientek_emmc.dts编译出来就是dtb文件

添加imx6ull-alientek_emmc.dts编译出来就是dtb文件

修改arch/arm/boot/dts/Makefile

将编译生成的zImage文件和dtb文件复制到tftpboot中,如何通过uboot命令行加载到DRAM中,启动内核

CPU主频和网络驱动修改

利用bootcmd环境变量设置默认从网络启动,通过tftp

setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 imx6ull-alientek-emmc.dtb;bootz 80800000 - 83000000;'

bootargs设置,根文件系统存放在emmc的分区2中,命令如下:

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

现在的问题就是EMMC驱动有问题,在imx6ull_alientek_emmc.dts下找到&usdhc2节点,进行如下修改

&usdhc2 {pinctrl-names = "default", "state_100mhz", "state_200mhz";pinctrl-0 = <&pinctrl_usdhc2_8bit>;pinctrl-1 = <&pinctrl_usdhc2_8bit_100mhz>;pinctrl-2 = <&pinctrl_usdhc2_8bit_200mhz>;bus-width = <8>;non-removable;status = "okay";
};

修改完编译设备树,使用如下命令:

make dtbs

查看CPU信息

cat /proc/cpuinfo

处理器性能越强,主频越高,BogoMIPS值就越大

修改主频

cd /sys/bus/cpu/devices/cpu0/cpufreq

例如:输入命令查看当前cpu主频

cat cpuinfo_cur_freq

make menuconfig打开图形化配置界面,进入CPU Power Managment

进入路径:

​    CPU Power Management                                                                                     

​         -> CPU Frequency scaling                                                                           

​             -> Default CPUFreq governor 

修改策略为**ondemand**

重新编译make,加载到DRAM

使能8线EMMC

修改设备树,imx6ull_alientek_emmc.dts 节点 usdhc2

并加入 no-1-8-v;

网络驱动修改

修改复位引脚

ENET1复位引脚ENET1_RST连接在I.M6ULL的SNVS_TAMPER7这个引脚上。ENET2的复位引脚ENET2_RST连接在I.MX6ULL的SNVS_TAMPER8上

打开设备树文件imx6ull-alientek-emmc.dts,删掉588、599行

打开设备树文件imx6ull-alientek-emmc.dts,删掉588、599行

删掉

添加

修改ENET1和ENET2的网络时钟引脚配置

修改fec1和fec2节点的pinctrl-0属性和SR8201F的PHY地址

修改fec_main.c文件

找到drivers/net/ethernet/freescale/fec_main.c的fec_reset_phy函数,在函数最后加一行200ms的延时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/487934.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】16. 内存函数

文章目录 一、 memcpy使⽤和模拟实现二、memmove使⽤和模拟实现三、memset函数的使⽤四、memcmp函数的使⽤ 一、 memcpy使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num );• 函数memcpy从source的位置开始向后复制num个字节的数据到des…

第六届地博会世界酒中国菜助力广州龙美地标美食公司推动地标发展

第六届知交会暨地博会&#xff1a;世界酒中国菜助力广州龙美地标美食公司推动地标产品创新发展 2024年12月9日至11日&#xff0c;第六届粤港澳大湾区知识产权交易博览会暨国际地理标志产品交易博览会在中新广州知识城盛大启幕。本届盛会吸引了全球众多知识产权领域的专业人士和…

docker安装victoriametrics(单机版)

docker安装victoriametrics 1、单机版安装2、victoriametrics增删改查2.1 、插入数据2.1.1 组装数据插入victoriametrics(java代码插入)2.1.2 Prometheus数据插入victoriametrics2.1.3 官网push到victoriametrics写法 2.2 、查询2.2.1 、Instant query&#xff08;即时查询&…

【Linux】系统信息和状态命令

步骤 1&#xff1a;显示系统信息 命令&#xff1a; uname -a 1.打开终端。 2.输入命令并按回车键。 3.观察&#xff1a;输出将显示包括内核版本、主机名、硬件架构等在内的系统信息。 步骤 2&#xff1a;显示或设置系统的主机名 命令&#xff1a; hostname 1.打开终端。…

RabbitMq死信队列延迟交换机

架构图 配置 package com.example.demo.config;import org.springframework.amqp.core.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class DeadLetterConfig {public String …

学生信息管理系统(简化版)数据库部分

使用Mysql&#xff0c;与navicat工具 下面是mysql创建的代码&#xff0c;可做必要修改 -- 创建学生学籍信息表 CREATE TABLE StudentEnrollment (-- 学号&#xff0c;作为主键student_id VARCHAR(8) NOT NULL,-- 学生姓名stu_name VARCHAR(8) NOT NULL,-- 学生性别gender VARC…

新手上路,学Go还是Python

对于新手来说&#xff0c;Go和Python都是很好的编程语言&#xff0c;它们各有特点&#xff0c;以下是详细的对比来帮助你决定先学哪一个&#xff1a; 一、语法和学习难度 Python 语法简洁易懂&#xff1a;Python以其简洁、优雅的语法而闻名&#xff0c;代码的可读性很高。例如…

信号处理:概念、应用、领域、方法

信号处理是一个广泛的领域&#xff0c;涉及对各种类型信号&#xff08;如音频信号、图像信号、生物信号、通信信号等&#xff09;的分析、操作和变换。信号处理的主要目标是获取有用信息、增强信号质量、消除噪声、提取特征以及实现数据 compression等。信号处理可以分为模拟信…

Socket编程-tcp

1. 前言 在tcp套接字编程这里&#xff0c;我们将完成两份代码&#xff0c;一份是基于tcp实现普通的对话&#xff0c;另一份加上业务&#xff0c;client输入要执行的命令&#xff0c;server将执行结果返回给client 2. tcp_echo_server 与udp类似&#xff0c;前两步&#xff1…

go语言的sdk项目搭建与git 操作标签tag并推送至远程仓库

在搭建 SDK 项目并结合 Git 操作标签&#xff08;Tag&#xff09;时&#xff0c;通常会涉及项目初始化、版本管理、Git 标签的创建与管理等内容。以下是一个完整的步骤指南&#xff0c;帮助您搭建 SDK 项目并学习如何使用 Git 标签。 ### 1. **搭建 SDK 项目** 首先&#xff…

Android13 USB 串口默认授权

一&#xff09;场景需求 项目中使用到了can协议控制车机功能&#xff0c;can 直接转串口&#xff0c;用USB转串口工具 cn.wch.uartlib 来实现. can 板子通过usb 插入到机器上面&#xff0c;那就是usb 协议了。 遇到问题&#xff1a; 插入can 板的usb 到机器上后&#xff0c;直…

【数据库】E-R模型、函数依赖、范式

2. 东方货运公司数据库的样本数据如下。 表名称&#xff1a;卡车 车号 货运站编号 类型 总行程 购入日期 1001 501 1 59002.7 11/06/2000 1002 502 2 54523.8 11/08/2000 1003 501 2 32116.6 09/29/2001 1004 502 2 3256.9 …

保姆级教学 uniapp绘制二维码海报并保存至相册,真机正常展示图片二维码

一、获取二维码 uni.request({url: https://api.weixin.qq.com/wxa/getwxacode?access_token${getStorage("token")},responseType: "arraybuffer",method: "POST",data: {path: "/pages/index/index"},success(res) {// 转换为 Uint…

JAVA安全—SpringBoot框架MyBatis注入Thymeleaf模板注入

前言 之前我们讲了JAVA的一些组件安全&#xff0c;比如Log4j&#xff0c;fastjson。今天讲一下框架安全&#xff0c;就是这个也是比较常见的SpringBoot框架。 SpringBoot框架 Spring Boot是由Pivotal团队提供的一套开源框架&#xff0c;可以简化spring应用的创建及部署。它提…

【数据结构】动态规划-基础篇

针对动态规划问题&#xff0c;我总结了以下5步&#xff1a; 确定dp数组以及下标的含义&#xff1b; 递推公式&#xff1b; dp数组如何初始化&#xff1b; 遍历顺序&#xff1b; 打印dp数组&#xff08;用来debug&#xff09;&#xff1b; 以上5步适用于任何动态规划问题&#x…

十一、容器化 vs 虚拟化-Docker 使用

文章目录 前言一、Docker Hello World二、Docker 容器使用三、Docker 镜像使用四、Docker 容器连接五、Docker 仓库管理六、Docker Dockerfile七、Docker Compose八、Docker Machine九、Swarm 集群管理 前言 Docker 使用‌ Docker 容器使用、镜像使用、容器连接、仓库管理、Do…

Java-22 深入浅出 MyBatis - 手写ORM框架3 手写SqlSession、Executor 工作原理

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…

EasyPlayer.js播放器如何在iOS上实现低延时直播?

随着流媒体技术的迅速发展&#xff0c;H5流媒体播放器已成为现代网络视频播放的重要工具。其中&#xff0c;EasyPlayer.js播放器作为一款功能强大的H5播放器&#xff0c;凭借其全面的协议支持、多种解码方式以及跨平台兼容性&#xff0c;赢得了广泛的关注和应用。 那么要在iOS上…

OpenAI深夜官宣!为期十二天的圣诞惊喜活动发布AI模型大招!Sora、满血o1和高级语音或将发布

OpenAI深夜官宣&#xff01;为期十二天的圣诞惊喜活动发布AI模型大招&#xff01;Sora、满血o1和高级语音或将发布 大家好&#xff0c;我是猫头虎&#x1f63a;&#xff0c;今天我们来聊聊最近科技圈的大新闻——OpenAI 深夜官宣的圣诞惊喜活动&#xff01;这次 OpenAI 的动作…

【JAVA高级篇教学】第二篇:使用 Redisson 实现高效限流机制

在高并发系统中&#xff0c;限流是一项非常重要的技术手段&#xff0c;用于保护后端服务&#xff0c;防止因流量过大导致系统崩溃。本文将详细介绍如何使用 Redisson 提供的 RRateLimiter 实现分布式限流&#xff0c;以及其原理、使用场景和完整代码示例。 目录 一、什么是限流…