全志ARM926 Melis2.0系统的开发指引②

news2024/9/22 15:50:40

全志ARM926 Melis2.0系统的开发指引②

  • 编写目的
  • 4. 编译工具链使用
    • 4.1.工具链通用配置
    • 4.2.模块的工具链配置
    • 4.3.简单的 makefile
  • 5. 固件烧录工具的安装
    • 5.1.PhoenixSuit 的安装步骤
    • 5.2.检验 USB 驱动安装
    • 5.3.使用烧录软件 PhoenixSuit
  • -全志相关工具和资源
    • -.1 全志固件镜像修改工具 ImageModify.exe 下载
    • -.2 全志固件USB刷机工具 PhoenixSuit 下载
    • -.3 全志Melis2.0 用户手册.pdf下载
    • -.4 全志melis2.0 sdk源码库下载

编写目的

本文档是全志 Melis2.0 系统的开发指引文档,旨在协助开发者了解和掌握 Melis 系统,快速搭建 Melis系统的开发环境,将 Melis2.0 系统应用到产品开发中。
在这里插入图片描述

4. 编译工具链使用

4.1.工具链通用配置

Melis2.0 平台工具链的配置文件是“sdkroot\includes\cfgs\CROSSTOOL.CFG”。 该文件指定了
Melis2.0 平台的编译工具、硬件平台、共用库目录和相关工具的路径,SDK 中所有模块的 makefile 都会引用该配置。
该配置文件中各变量名由平台整合人员统一设置分配,用户可以使用相关的变量,但是不要对变量的
名称作修改,以免造成无法编译。相关变量的含义如下:
$(CROSSTOOL),定义交叉编译工具类型:
“ARMRVDS”,定义交叉编译工具为 RVDS;
“ARMGCC”,定义交叉编译工具为 ARMGCC;

$(EPDK_CHIP),定义硬件平台的类型,定义在脚本“sdkroot\includes\cfgs\chip.cfg”中:
$(LIBPATH),定义 Melis2.0 平台的共享库目录。
$(INTERLIBPATH),定义 Melis2.0 平台内部共享库目录。
$(WORKSPACEPATH),定义 Melis2.0 平台目标文件及打包工作路径。
$(ESTUDIOROOT),定义 Melis2.0 平台使用的 PC 工具的路径。
$(RVDSPATH),定义了 Melis2.0 平台使用的 RVDS 工具的安装路径。
$(CC),定义 C 语言编译工具:
RVDS 交叉编译工具下为“armcc”;
GCC 交叉编译工具下为“arm-elf-gcc”;

$(CFLAGS),定义 C 语言编译工具的基本配置参数。
$(AS),定义汇编器工具:
RVDS 交叉编译工具下为“armasm”;
GCC 交叉编译工具下为“arm-elf-as”;

$(ASFLAGS),定义汇编器的基本配置参数。
$(LINK),定义链接工具:
RVDS 交叉编译工具下为“armlink”;
GCC 交叉编译工具下为“arm-elf-ld”;

$(LKFLAGS),定义链接工具基本配置参数。
$(AR),定义库打包工具:
RVDS 交叉编译工具下为“armar”;
GCC 交叉编译工具下为“arm-elf-ar”;

$(ARFLAGS),定义库打包工具的基本配置参数。
$(LOAD),定义加载器工具:
RVDS 交叉编译工具下为“fromelf”;
GCC 交叉编译工具下为“arm-elf-objcopy”;

$(LDFLAGS),定义加载器工具的基本配置参数。

4.2.模块的工具链配置

CROSSTOOL.CFG 仅配置了一些公共内容,在模块的 make.cfg 使用 include 关键字来使用 CROSSTOOL.CFG
中的配置。包含了公有配置的同时,可在每个模块的 make.cfg 文件中自定义私有配置。虽然是私有配置,但一般都包括下面几个部分:
$(ROOT),定义当前模块的根目录,一般为“.”。
( S D K R O O T ) ,定义“ s d k r o o t ”目录相对于 (SDKROOT),定义“sdkroot”目录相对于 (SDKROOT),定义sdkroot目录相对于(ROOT)的相对路径,此变量必须定义,CROSSTOOL.CFG 配置
文件中会通过此变量来引用 SDK 的根目录。
include $(SDKROOT)/includes/cfgs/CROSSTOOL.CFG,引用编译工具通用配置。
$(INCLUDES),定义所有需要引用的头文件的路径。
$(LIBS),定义需要引用的库文件。
$(SRCDIRS),定义所有需要引用的源文件的路径,一般采用自动扫描的方式来定义,不需要逐项列出。
$(TARGET),定义需要输送出去的目标文件,一般不包含调试信息。
$(LOCALTARGET),定义本地生成的目标文件,一般命名为“__image.axf”,包含有完整的调试信息,用作调试。
$(LINK_SCT),定义链接程序使用的链接脚本。
除此以外,还需要对“CFLAGS”、“ASFLAGS”、“LKFLAGS”、“LDFLAGS”等相关工具配置参数做相应的扩展,以满足模块编译的特定需求。
下面是一个 make.cfg 示例:
图16:
在这里插入图片描述

4.3.简单的 makefile

Melis2.0 平台采用 makefile 的隐含规则完成对所有源文件的编译。没有启用完整的依赖规则,只有当
源码文件(.c、.s)文件发生修改后,才会重新编译该源码文件(未修改的源码文件不会被重新编译),修改头文件(.h)不会引发对源码文件的重新编译,因此,当修改了相关的头文件以后,必须先执行 clean,
再重新编译。一个基本的 makefile 一般包括以下几个部分:
include make.cfg,引用 makefile 的配置文件。
$(SRCCS),通过自动扫描获得的
.c 源文件列表。
$(SRCSS),通过自动扫描获得的*.s 源文件列表。
( O B J S ) ,通过后缀替换规则从 (OBJS),通过后缀替换规则从 (OBJS),通过后缀替换规则从(SRCCS)和 ( S R C S S ) 获得的 ∗ . o 文件列表, ∗ . o 文件通过 m a k e f i l e 的隐含规则自动编译 (SRCSS)获得的*.o 文件列表,*.o 文件通过 makefile 的隐含规则自动编译 (SRCSS)获得的.o文件列表,.o文件通过makefile的隐含规则自动编译(SRCCS)和$(SRCSS)获得。
( L O C A L T A R G E T ) : (LOCALTARGET): (LOCALTARGET):(OBJS),链接相关的*.o 和库文件得到本地目标文件。
all:$(LOCALTARGET),通过本地文件得到输出目标文件,该符号也是 makefile 的默认入口。
clean,清理生成的临时文件。
一个简单的 makefile 示例文件如下:
图17:
在这里插入图片描述

5. 固件烧录工具的安装

5.1.PhoenixSuit 的安装步骤

【step1】双击 图标,开始 PhoenixSuit 的安装。如【图 18】所示,点击安装向导“下一步”按钮,。
图18:
在这里插入图片描述

【step2】如【图 19】所示,默认安装路径,也可点击“浏览”按钮自定义安装路径,点击“下一步”按钮;
图19:

在这里插入图片描述
【step3】如【图 20】所示,点击“下一步”按钮确认安装;
图20:
在这里插入图片描述
【step4】如【图 21】所示,进入安装,进度条显示安装进度;
图21:
在这里插入图片描述
【step5】如【图 22】所示,安装过程中会弹出 USB 驱动安装提示窗口,点击“下一步”继续安装;
图22:
在这里插入图片描述
【step6】如【图 23】所示,如弹出无法验证发布者按钮,请点击“始终安装此驱动程序软件”继续安装;
图23:
在这里插入图片描述
【step7】如【图 24】所示,驱动安装完成后弹出提示窗口,点击“完成”按钮结束 USB 驱动的安装;
图24:
在这里插入图片描述
【step8】如【图 25】所示,【step7】的 USB 驱动的安装完成后,PhoenixSuit 会继续自动安装,安装完成后会出现“安装完成”提示窗口,点击“关闭”按钮结束安装。
图25:
在这里插入图片描述

5.2.检验 USB 驱动安装

PhoenixSuit 安装完成后,可打开 windows 的“设备驱动管理器”,点击“通用串行总线控制器”弹出
的设备条目,查看是否有“VID_1f3a_PID_efe8”的 USB 设备,如【图 26】所示。
图26:
在这里插入图片描述
如果开发者想要重新安装驱动,驱动在 PhoenixSuit 的安装文件夹中也有备份,参考下图【图 27】所示。
图27:
在这里插入图片描述

5.3.使用烧录软件 PhoenixSuit

【step1】双击 图标,运行 PhoenixSuit 工具,点击“一键刷机”选项卡,如【图 28】所示
图28:
在这里插入图片描述
【step2】点击【图 11】的“浏览”按钮来指定固件的存放路径,参考【图 29】,选中.img 后缀的固件文件之后,点击“打开”按钮完成固件选择。
图29:
在这里插入图片描述
【step4】选择好固件之后如【图 30】所示。接下来参考【图 31】,开发板断电的情况下,短路 Norflash 的1、2 引脚,通过 USB 线将电脑和开发板相连,再给开发板上电,上电 1~2 秒后松开 Norflash 的短路引脚即
可。如开发板本身是通过 USB 的 5V 供电,即 USB 链接电脑和开发板时就已经上电,则按照“先短路,后供电”的原则操作本步骤。
图30:
在这里插入图片描述

图31:
在这里插入图片描述
【step5】步骤 4【step4】完成之后,开发板就会跟电脑交互通信,自动进入烧录模式,PhoenixSuit 出现进度条提示烧录进度,如【图 32】所示。至此,开发者等待烧录完成即可。
图32:
在这里插入图片描述
【step6】烧录完成后,会出弹出烧录成功提示窗口,则表示烧录成功完成,开发者即可重启运行新固件。
图33:
在这里插入图片描述

-全志相关工具和资源

-.1 全志固件镜像修改工具 ImageModify.exe 下载

在这里插入图片描述
下载地址:
固件镜像修改工具 ImageModify.exe下载 ImageModify_20230906.rar

-.2 全志固件USB刷机工具 PhoenixSuit 下载

在这里插入图片描述
下载地址:
USB刷机工具 PhoenixSuit下载 PhoenixSuit_CN_V1.1.1_20230906.rar

-.3 全志Melis2.0 用户手册.pdf下载

下载地址:
全志Melis2.0 用户手册.pdf下载 documents_20230906_melis_v2.0.rar

-.4 全志melis2.0 sdk源码库下载

下载地址:
全志melis2.0 sdk源码库下载 melis2.0-sdk-release_20230906V2.0.rar

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python:操作SQLite数据库简单示例

本文用最简单的示例演示python标准库提供的SQLite数据库进行新增、查询数据的过程。 代码文件app.py # -*- coding: UTF-8 -*- from flask import Flask import sqlite3app Flask(__name__)app.route(/) def hello_world():return Hello World!#创建数据库 app.route(/creat…

Go基础之变量和常量

Go基础之变量和常量 文章目录 Go基础之变量和常量一. 标识符、关键字、内置类型和函数1.1 标识符1.2 关键字1.3 保留字1.4 内置类型1.4.1 值类型:1.4.2 引用类型:(指针类型)1.5 内置函数1.6 内置接口error 二.Go变量命名规范2.1 采用驼峰体命名2.2 简单、…

Python无废话-办公自动化Excel图表制作

openpyxl 支持用Excel工作表中单元格的数据,创建条形图、折线图、散点图和饼图等。 图表制作步骤 在openpyxl模块中创建图表,步骤如下: ①选择一个单元格区域,创建Reference 对象,作为图形数据a)(Value)。 ②创建一个Chart对象…

阿里云ECS服务器上启动的portainer无法访问的问题

如下图,在阿里云ECS服务器上安装并启动了portainer,但是在自己电脑上访问不了远程的portainer。 最后发现是要在网络安全组里开放9000端口号,具体操作如下: 在云服务器管理控制台点击左侧菜单中的网络与安全-安全组,然…

阻塞队列--线程安全问题

之前的队列在很多场景下都不能很好地工作,例如 大部分场景要求分离向队列放入(生产者:主要调用offer方法)、从队列拿出(消费者:主要调用poll方法)两个角色、它们得由不同的线程来担当&#xff0…

uboot启动流程-uboot内存分配工作总结

一. uboot 启动流程 _main 函数中会调用 board_init_f 函数,本文继续简单分析一下 board_init_f 函数。 本文继续具体分析 board_init_f 函数。 本文继上一篇文章的学习,地址如下: uboot启动流程-uboot内存分配_凌肖战的博客-CSDN博客 二…

【C语言】浮点数在内存中的存储和读取——底层分析

🚀write in front🚀 🔎大家好,我是gugugu。希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🆔本文由 gugugu 原创 CSDN首发🐒 如需转载还请通知⚠…

【12】c++设计模式——>单例模式练习(任务队列)

属性: (1)存储任务的容器,这个容器可以选择使用STL中的队列(queue) (2)互斥锁,多线程访问的时候用于保护任务队列中的数据 方法:主要是对任务队列中的任务进行操作 &…

MySql运维篇---008:日志:错误日志、二进制日志、查询日志、慢查询日志,主从复制:概述 虚拟机更改ip注意事项、原理、搭建步骤

1. 日志 1.1 错误日志 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的&a…

[激光原理与应用-71]:光电传感器的工作原理详解:光电效应原理、类型、光信号的光谱、电信号的频谱

目录 前言: 一、光电传感器组成 二、光电元件:光电效应的分类 2.1 外光电效应:逸出效应 2.2 内光电效应:光电导效应 2.3 内光电效应:光生伏特效应(电流效应) 2.3.1 光电转换元件PD 三、…

云安全之等级保护详解

等级保护概念 网络安全等级保护,是对信息系统分等级实行安全保护,对信息系统中使用的安全产品实行按等级管理,对信息系统中发生的信息安全事件分等级进行响应、处置。 网络安全等级保护的核心内容是:国家制定统一的政策、标准&a…

【ldt_struct】0ctf2021-kernote

前言 题目给的文件系统是 ext4,所以我们只需要将其挂载即可使用: 1、创建一个空目录 2、使用 mount 将其挂载即可 3、使用 umount 卸载即可完成打包 开启了 smap、smep、kaslr 和 kpti 保护,并且给了如下内核编译选项: Her…

SpringBoot大文件上传实现分片、断点续传

大文件上传流程 客户端计算文件的哈希值,客户端将哈希值发送给服务端,服务端检查数据库或文件系统中是否已存在相同哈希值的文件,如果存在相同哈希值的文件,则返回秒传成功结果,如果不存在相同哈希值的文件&#xff0…

GO 中的指针?

本文也主要聊聊在 GO 中的指针和内存,希望对你有点帮助 如果你学习过 C 语言,你就非常清楚指针的高效和重要性 使用 GO 语言也是一样,项目代码中,不知道你是否会看到函数参数中会传递各种 map,slice ,自定…

使用正则表达式批量修改函数

贪心匹配,替换中的$1代表括号中的第一组。 使用[\s\S\r]代表所有字符,同时加个问号代表不贪心匹配:

【RP-RV1126】烧录固件使用记录

文章目录 烧录完整固件进入MASKROM模式固件烧录升级中:升级完成: 烧录部分进入Loader模式选择文件切换loader模式 烧录完整固件 完整固件就是update.img包含了所有的部件,烧录后可以直接运行。 全局编译:./build.sh all生成固件…

Java数据结构————优先级队列(堆)

一 、 优先级队列 有些情况下,操作的数据可能带有优先级, 一般出队列时,可能需要优先级高的元素先出队列。 数据结构应该提供两个最基本的操作, 一个是返回最高优先级对象, 一个是添加新的对象。 这种数据结构就是优…

(一)正点原子STM32MP135移植——准备

一、简述 使用板卡:正点原子的ATK-DLMP135 V1.2 从i.mx6ull学习完过来,想继续学习一下移植uboot和内核的,但是原子官方没有MP135的移植教程,STM32MP157的移植教程用的又是老版本的代码,ST官方更新后的代码不兼容老版本…

微信小程序button按钮去除边框去除背景色

button边框 去除button边框 在button上添加plain“true”在css中添加button.avatar-wrapper {background: none}用于去除button背景色在css中添加button.avatar-wrapper[plain]{ border:0 }用于去除button边框

数组结构与算法

文章目录 数据结构与算法稀疏数组sparse队列单向链表双向链表单向环形列表:CircleSingleLinkedList栈递归排序算法快速排序思路 树赫夫曼树 (HuffmanTree)二叉排序树(Binary sort tree)构建二叉树遍历二叉树 平衡二叉树…