Linux运行在I.M6ULL嵌入式开发板配置

简介: Linux运行在I.M6ULL嵌入式开发板配置

一、 ubuntu和板子网络设置

【正点原子】I.MX6U网络环境TFTP&NFS搭建手册V1.3.1

中1.4 电脑wifi上网,开发板直连

uboot设置

setenv ipaddr 192.168.10.50
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.10.1
setenv netmask 255.255.255.0
setenv serverip 192.168.10.100
saveenv
ping 192.168.10.100

在使用板子前,在板子上设置ip

ifconfig eth0 up
ifconfig eth0 192.168.10.50
ifconfig

二、 交叉编译器设置

【正点原子】I.MX6U用户快速体验V1.9

中4.1和4.2 安装交叉编译链

交叉编译

  • 使能环境变量
    交叉编译工具的环境进行设置,使用 source 执行安装目录下的
    environment-setup-cortexa7hf-neon-poky-linux-gnueabi 脚本文件即可
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
  • 编译
$CC test_add.c -o test_add_im6ull

CC 变量其实就是交叉编译工具

  1. $ CC :$是取值符号,取终端的环境变量 CC 的值.
  2. main.c :c 文件
  3. -o :参数-o,后面加编译的目标文件

三、Cmake编译

image.png


使用Cmake生成makefile,再用make编译

cmake安装

sudo apt-get install cmake

camke配置

C文件、H文件和CMakeLists.txt文件放在同一文件夹内

其中CMakeLists.txt为配置cmake


image.png


CMakeLists.txt内容

gcc编译版本

cmake_minimum_required(VERSION 2.8.12)
project(C_and_CPP CXX C)
message(STATUS "CMake version: " ${CMAKE_VERSION})
message(STATUS "CMake system name: " ${CMAKE_SYSTEM_NAME})
message(STATUS "CMake system processor: " ${CMAKE_SYSTEM_PROCESSOR})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
include_directories(${CMAKE_SOURCE_DIR}/include)
file(GLOB SRC_FILES
    "${PROJECT_SOURCE_DIR}/src/*.c"
    "${PROJECT_SOURCE_DIR}/src/*.cpp"
)
add_executable(${CMAKE_PROJECT_NAME}  ${SRC_FILES})
target_link_libraries(C_and_CPP pthread)

交叉编译i.m6ull版本

源文件和头文件分开管理版本


855e766c1a094b8fbd89b7024732fef3.png

cmake_minimum_required(VERSION 2.8.12)
project(C_and_CPP CXX C)
##################################
# 配置ARM交叉编译
#################################
set(CMAKE_SYSTEM_NAME Linux)    #设置目标系统名字
set(CMAKE_SYSTEM_PROCESSOR arm) #设置目标处理器架构
 #指定编译器的sysroot路径
set(TOOLCHAIN_DIR /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots)
set(CMAKE_SYSROOT ${TOOLCHAIN_DIR}/cortexa7hf-neon-poky-linux-gnueabi)
# 指定交叉编译器arm-linux-gcc
set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER  ${TOOLCHAIN_DIR}/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++)
# 为编译器添加编译选项
set(CMAKE_C_FLAGS  "-march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7")
set(CMAKE_CXX_FLAGS  "-march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7")
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
#################################
# end
##################################
message(STATUS "CMake version: " ${CMAKE_VERSION})
message(STATUS "CMake system name: " ${CMAKE_SYSTEM_NAME})
message(STATUS "CMake system processor: " ${CMAKE_SYSTEM_PROCESSOR})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
include_directories(${CMAKE_SOURCE_DIR}/include)
file(GLOB SRC_FILES
    "${PROJECT_SOURCE_DIR}/src/*.c"
    "${PROJECT_SOURCE_DIR}/src/*.cpp"
)
add_executable(${CMAKE_PROJECT_NAME}  ${SRC_FILES})
target_link_libraries(C_and_CPP pthread)

cmake使用

在文件夹内新建build 文件夹

进入build文件夹

cmake ..

7513489a93f044e5a30ed984f1424965.png

cmake生成makefile,再make编译

make

结果在build文件夹内bin文件夹


29aa776dbb044e4caab1a3a6f18c0a17.png

四、传输文件到板子上

使用scp 命令


c3702e776cd04728bfc992f89d62514b.png

b7eb0fda44df44799680952d529d517b.png

1、从本地将文件传输到服务器

scp【本地文件的路径】【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】

scp /Users/mac_pc/Desktop/test.png root@192.168.1.1:/root


2、从本地将文件夹传输到服务器

scp -r【本地文件的路径】【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】

scp -r /Users/mac_pc/Desktop/test root@192.168.1.1:/root

3、将服务器上的文件传输到本地

scp 【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】【本地文件的路径】

scp root@192.168.1.1:/data/wwwroot/default/111.png /Users/mac_pc/Desktop


4、将服务器上的文件夹传输到本地

scp -r 【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】【本地文件的路径】

scp -r root@192.168.1.1:/data/wwwroot/default/test /Users/mac_pc/Desktop

五、下载uboot到板子上

../../imxdownload u-boot.bin /dev/sdb

六、uboot启动Linux

从MMC中

mmc dev 1  //切换到 EMMC
fatls mmc 1:1 //查看mmc内文件
fatload mmc 1:1 0x80800000 zImage //读取 zImage 到 0x80800000 处
fatload mmc 1:1 0x83000000 imx6ull-14x14-evk.dtb //读取设备树到 0x83000000 处
bootz 0x80800000 - 0x83000000 //启动 Linux

从网络

tftp 80800000 zImage
tftp 83000000 imx6ull-alientek-emmc.dtb
bootz 80800000 - 83000000
相关文章
|
7天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
27 9
|
9天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
24 5
|
1月前
|
机器学习/深度学习 人工智能 Ubuntu
|
23天前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
38 2
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
274 3
|
1月前
|
监控 安全 网络协议
快速配置Linux云服务器
【10月更文挑战第3天】快速配置Linux云服务器
|
消息中间件 缓存 Unix
[面试必备]嵌入式Linux内核开发必须了解的三十道题
[面试必备]嵌入式Linux内核开发必须了解的三十道题
|
Linux
嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑
嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑
241 0
|
Linux Go 人机交互
嵌入式linux之go语言开发(十三)LittlevGL,漂亮的嵌入式GUI的go语言绑定
嵌入式linux之go语言开发(十三)LittlevGL,漂亮的嵌入式GUI的go语言绑定
|
存储 XML JSON
嵌入式linux之go语言开发(十二)参数配置文件存储模块开发
嵌入式linux之go语言开发(十二)参数配置文件存储模块开发