当前位置: 首页 > news >正文

《嵌入式硬件(七):使用IMX6ULL所需环境以及编译方法》

一、windows下安装vscode

比虚拟机流畅

启动代码

        1.初始化系统时钟

.global _start_start:ldr pc, =_reset_handlerldr pc, =_undefine_handlerldr pc, =_svc_handlerldr pc, =_prefetch_abort_handlerldr pc, =_data_abort_handlerldr pc, =_reserved_handlerldr pc, =_irq_handlerldr pc, =_fiq_handler_undefine_handler:ldr pc, =_undefine_handler_svc_handler:ldr pc, =_svc_handler_prefetch_abort_handler:ldr pc, =_prefetch_abort_handler_data_abort_handler:ldr pc, =_data_abort_handler_reserved_handler:ldr pc, =_reserved_handler_irq_handler:ldr pc, =_irq_handler_fiq_handler:ldr pc, =_fiq_handler_reset_handler:mrs r0, cpsrbic r0, r0, #0x1Forr r0, r0, #0x12   //irqmsr cpsr, r0ldr sp, =0x86000000	//起始地址80000000,ram大小为512mb(20000000)	80000000~A0000000-1mrs r0, cpsrbic r0, r0, #0x1Forr r0, r0, #0x1F   //systemmsr cpsr, r0   ldr sp, =0x84000000	//给irq分配的栈指针空间// 初始化系统时钟bl _enable_clocks_enable_clocks://开门ldr r0, =0x020c4068mov r1, #0xFFFFFFFFstr r1, [r0]ldr r0, =0x020c406Cstr r1, [r0]ldr r0, =0x020c4070str r1, [r0]ldr r0, =0x020c4074str r1, [r0]ldr r0, =0x020c4078str r1, [r0]ldr r0, =0x020c407Cstr r1, [r0]ldr r0, =0x020c4080str r1, [r0]bx lrfinished:b finished
手册

把这七个寄存器全部打开,值全部设置为默认值,初始化系统时钟

        2.点灯

.global _start_start:ldr pc, =_reset_handlerldr pc, =_undefine_handlerldr pc, =_svc_handlerldr pc, =_prefetch_abort_handlerldr pc, =_data_abort_handlerldr pc, =_reserved_handlerldr pc, =_irq_handlerldr pc, =_fiq_handler_undefine_handler:ldr pc, =_undefine_handler_svc_handler:ldr pc, =_svc_handler_prefetch_abort_handler:ldr pc, =_prefetch_abort_handler_data_abort_handler:ldr pc, =_data_abort_handler_reserved_handler:ldr pc, =_reserved_handler_irq_handler:ldr pc, =_irq_handler_fiq_handler:ldr pc, =_fiq_handler_reset_handler:mrs r0, cpsrbic r0, r0, #0x1Forr r0, r0, #0x12   //irqmsr cpsr, r0ldr sp, =0x86000000	//起始地址80000000,ram大小为512mb(20000000)	80000000~A0000000-1mrs r0, cpsrbic r0, r0, #0x1Forr r0, r0, #0x1F   //systemmsr cpsr, r0   ldr sp, =0x84000000	//给irq分配的栈指针空间// 初始化系统时钟bl _enable_clocks// 初始化LED引脚bl _init_led// 点亮LEDbl _led_onb finished_led_on://点灯ldr r0, =0x209C000//DRmov r1, #0str r1, [r0]bx lr                    _init_led://复用控制器,电气属性ldr r0, =0x20E02F4//电气属性p1793ldr r1, =0x10B0str r1, [r0]ldr r0, =0x20E0068//多路复用ldr r1, =0x05str r1, [r0]ldr r0, =0x209C004//GDRImov r1, #0x00000001str r1, [r0]bx lr _enable_clocks://开门ldr r0, =0x020c4068mov r1, #0xFFFFFFFFstr r1, [r0]ldr r0, =0x020c406Cstr r1, [r0]ldr r0, =0x020c4070str r1, [r0]ldr r0, =0x020c4074str r1, [r0]ldr r0, =0x020c4078str r1, [r0]ldr r0, =0x020c407Cstr r1, [r0]ldr r0, =0x020c4080str r1, [r0]bx lrfinished:b finished
手册
     1)电气属性,设置为gpio1

   

        2)多路复用
        3)gdri

                设置输入输出

        4)dr

二、FileZilla安装

        和虚拟机进行文件传输,在linux中要搭建服务器

搭建服务器

sudo /etc/init.d/networking restart    //重启网络
ifconfig     //查询网络
sudo apt-get install vsftpd    //安装服务器
sudo vi /etc/vsftpd.conf    //编辑文档,允许write
sudo /etc/init.d/vsftpd restart    //重启

三、编译环境配置

安装编辑器

sudo cp ~/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz ./    //移动到/usr/local/arm下sudo tar xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz    //解压安装编译器vi .bashrc    //修改文件source .bashrc     //全局作用arm-linux-gnueabihf-gcc -v    //检查交叉编译器版本,若输出类似gcc version 4.9.4的信息,则安装成功sudo apt-get install lsb-core lib32stdc++6A   //安装运行交叉编译器所需的32位兼容库和基础工具,避免后续编译出现链接错误 

四、编译命令

 arm-linux-gnueabihf-gcc -g -c start.S -ostart.o    //编译汇编文件为对象文件
//arm-linux-gnueabihf-gcc:ARM 交叉编译器(带硬浮点支持)
-g:生成调试信息
-c:仅编译不链接
start.S:输入的汇编源代码文件
-o start.o:输出目标文件arm-linux-gnueabihf-ld -Ttext 0X87800000 start.o -O binary -ostart.elf    //链接对象文件生成可执行文件
//arm-linux-gnueabihf-ld:ARM 交叉链接器
-Ttext 0X87800000:指定代码段加载地址为 0x87800000
start.o:输入的目标文件
-o start.elf:输出 ELF 格式可执行文件file start.elf    //输出 start.elf 的文件类型信息,验证是否为 ARM 架构的 ELF 文件arm-linux-gnueabihf-objcopy -S -g start.elf start.bin    //生成原始二进制文件
//arm-linux-gnueabihf-objcopy:二进制转换工具
-S:移除所有符号和重定位信息
-g:保留调试段(与 -S 配合时可能无效)
start.elf:输入文件arm-linux-gnueabihf-objdump -D start.elf > start.dis     //生成反汇编文件
//arm-linux-gnueabihf-objdump:反汇编工具
-D:反汇编所有段(包括数据段)
start.elf:输入文件
> start.dis:将反汇编结果重定向到文本文件

五、烧录

使用SD卡烧录bin文件的步骤

1.准备SD卡和工具

确保有一张格式化为FAT32文件系统的SD卡,容量适中。需要一个读卡器或设备内置的SD卡插槽。下载并安装适用于目标设备的烧录工具。

 

下载烧录工具,挪到文件代码文件夹里面

如果不是绿色,用下面的命令

chmod +x imxdownload
2.复制bin文件到SD卡

        ls /dev/sd*        往/dev/sdb装,一定不能装到/dev/sda

3.使用烧录工具写入

        ./imxdownload start.bin /dev/sdb

4.安全弹出并插入目标设备

5.按照模式拨BOOT拨码开关

本次使用sd,把1和7拨上去

6.上电


文章转载自:

http://RLrG86MX.wmcng.cn
http://ScBlJYLj.wmcng.cn
http://8emH2uzI.wmcng.cn
http://eSNhvLU3.wmcng.cn
http://xTpA0QKi.wmcng.cn
http://s8LAHkKw.wmcng.cn
http://DGKqEYIN.wmcng.cn
http://ioHBUEUN.wmcng.cn
http://uM8tB3wU.wmcng.cn
http://pULl1Hl8.wmcng.cn
http://WPG0UTup.wmcng.cn
http://K9byPrxn.wmcng.cn
http://3JEaM2fW.wmcng.cn
http://ZqBhiQdp.wmcng.cn
http://AWdDyHoS.wmcng.cn
http://OGppjOPn.wmcng.cn
http://LbDjvrDS.wmcng.cn
http://w4GOAorw.wmcng.cn
http://ETigqGkh.wmcng.cn
http://rO6rEw3g.wmcng.cn
http://CuYrLLCp.wmcng.cn
http://Par598PR.wmcng.cn
http://PgxaY3vg.wmcng.cn
http://pJp27MHE.wmcng.cn
http://TwYfEK5V.wmcng.cn
http://g4ueAWbC.wmcng.cn
http://OtLz19ye.wmcng.cn
http://aGne2hn7.wmcng.cn
http://CLf0h0Tg.wmcng.cn
http://PJ1f7npq.wmcng.cn
http://www.dtcms.com/a/377272.html

相关文章:

  • vue-router 的实现原理
  • QC/T 216-2019 汽车用地毯检测
  • pycharm突然不能正常运行
  • OpenCV 高阶实战:图像直方图与掩码图像深度解析
  • Docker搭建Redis服务(简单版)
  • Unix/Linux 系统中的 `writev` 系统调用
  • 商量SenseChat:商汤大语言模型
  • 免侵权指南:2025免费版权中文字体网站就用这些
  • 【嵌入式】【科普】虚拟总线VFB
  • 使用微软官方安装程序找不到C盘是什么问题
  • ICCV 2025|基于曲线感知高斯溅射的3D参数曲线重建
  • Docker 容器的使用
  • 3DTiles再处理功能全解析:从性能优化到效果渲染
  • Android传统开发 vs Android Compose vs HarmonyOS ArkUI 对照表
  • 【51单片机】【protues仿真】基于51单片机数控直流稳压电源系统
  • 大语言模型预训练流程
  • 企业如何利用群晖 NAS 构建高效数据备份与容灾体系
  • 机械臂和下载实现
  • Linux 网络配置解析及IP地址配置
  • 罗斯曼选股策略
  • [Java恶补day54] 整理模板·考点十二【回溯】
  • 品牌如何运用大数据分析?
  • vim笔记:配置笔记(长期记录)
  • Docker部署OpenWrt实现旁路由上网的详细步骤以及排雷点
  • 第6篇、Kafka 高级实战:生产者路由与消费者管理
  • GNOME桌面环境完整快捷键指南:提升Linux工作效率
  • 【竞赛系列】机器学习实操项目06——客户信用评估模型进阶流程(特征重要性分析与稳定性监控)
  • 网络编程从入门到面试:核心知识点与实战指南
  • 数电实验计划
  • A/B测试全解析:原理、流程与实战案例