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

2023-10-05 10:56

本文主要是介绍全志ARM926 Melis2.0系统的开发指引①,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

  • 1. 编写目的
  • 2. Melis2.0 系统概述
  • 3. Melis2.0 快速开发
    • 3.1. Melis2.0 SDK 目录结构
    • 3.2. Melis2.0 编译环境
    • 3.3. Melis2.0 固件打包
    • 3.4. Melis2.0 固件烧录
    • 3.5.串口打印信息
    • 3.6. Melis2.0 添加和调用一个模块
      • 3.6.1. 为什么划分模块?
      • 3.6.2. UART 驱动模块
        • 3.6.2.1.编译
        • 3.6.2.2.加载和使用
        • 3.6.2.3.UART0 的 PIN 脚配置
  • -. 全志相关工具和资源
    • -.1 全志固件镜像修改工具 ImageModify.exe 下载
    • -.2 全志固件USB刷机工具 PhoenixSuit 下载
    • -.3 全志Melis2.0 用户手册.pdf下载
    • -.4 全志melis2.0 sdk源码库下载

1. 编写目的

在这里插入图片描述

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

2. Melis2.0 系统概述

Melis2.0 系统是基于全志芯片平台自主研发的一套软件系统,其内容涵盖 SDK 代码包、资源制作工具组、编译链接脚本、固件打包烧录工具套件、调试工具 5 个部分,本文档将在后续章节向开发者逐一进行
介绍。
图1:
在这里插入图片描述

3. Melis2.0 快速开发

3.1. Melis2.0 SDK 目录结构

Melis2.0 发布版本的 SDK 目录结构如下【图 2】所示,下面按照源码文件夹、打包文件夹、临时库文
件夹、工具文件夹的顺序介绍各文件夹的功能,使开发者对 Melis2.0 SDK 的目录结构有一个初步印象。
图2:
在这里插入图片描述

eBSP】板级支持包文件夹,该文件夹存放的是 spi、uart、sdio 等驱动的源码文件,包含了各驱动模块对应寄存器的设置代码,生成的目标文件是.a 后缀的库文件,在编译链接 eMod 中的驱动时使用这些.a 库。

eLIBs】公共库文件夹,生成的目标文件是.a 后缀的库文件,包含了一些公共库函数接口,例如一些本平台自定义的 stdio、string 等接口。

eMod】驱动模块文件夹,本文件夹主要是以 drv_、mod_开头的子文件夹,各子文件夹代表一个独立的驱动/中间件模块,编译每个子文件夹中的源码会生成一个 ELF 格式的可执行文件。eBSP 库中生成的.a 库大多是在这里的驱动模块编译链接时使用。

includes】此文件夹用于存放公用的.h 后缀头文件,为使代码结构清晰,这些头文件会按照功能分别放到各个子文件夹中。

interinc】此文件夹存放的头文件主要是与 ELF 格式可执行文件的解析相关的宏定义和结构体定义等。

livedesk】本文件夹属于应用层文件夹,桌面、音乐、视频、相册、日历、录音等功能的代码均存放于此。

makefile】SDK 根目录编译脚本文件,打开 cygwin 命令行窗口,进入 SDK 目录,输入 make clean;make命令后按“回车”键,就会执行此 makefile 脚本把整个 SDK 重新编译一遍。

workspace】编译 eMod、livedesk 文件夹中的源码所生成的驱动、中间件、应用等独立模块的 ELF 可执行文件均存放于此,通过运行 workspace\suniv\beetles\image.bat 脚本,将这些独立的可执行文件,打包合成一个.img 后缀的文件,用于烧录到开发板中的存储设备(比如 Norflash)。

libs】本文件夹主要是存放.a 库,不存放源码,eBSP、eLIBs 文件夹中编译生成的.a 后缀文件均存放在本文件夹中;

softwares】本文件夹用于存放工具软件。

tools】本文件夹主要存放打包脚本中调用到的 windows 应用程序,例如将一些配置信息更新到已经生成的可执行文件中,就会使用到本文件夹中的工具。

3.2. Melis2.0 编译环境

Melis2.0 的编译环境是 Cygwin + RVDS2.2。
Cygwin 是在 windows 上运行的类 Unix 环境;RVDS2.2 即 RealView Development Suite 2.2,是由 ARM公司出品的交叉编译工具套件。
双击 cygwin 图标运行 cygwin,通过命令行窗口输入命令。进入 SDK 根目录,输入 make clean;make命令来执行根目录的 makefile 脚本,重新编译整个 sdk,参考下【图 3】。可使用文本编辑工具打开 makefile
文件查看和修改。
根目录下的 makefile 脚本运行时,逐层编译链接 eBSP、eLIBs、eMOD、livedesk 文件夹中各个子目
录 , 生 成 ELF 格 式 的 可 执 行 文 件 以 供 打 包 生 成 固 件 。 这 些 ELF 可 执 行 文 件 的 分 别 存 放 到 了
workspace/beetles/ramfs 或 workspace/beetles/rootfs 文件夹。
关于 Melis2.0 编译链接工具的具体调用流程,请参考第 4 章《编译工具链使用》。
图3:
在这里插入图片描述

3.3. Melis2.0 固件打包

进入 SDK 的 workspace\suniv\beetles\文件夹,双击 image.bat 运行该脚本,把各驱动、中间件、应
用模块等独立的可执行文件合成到 ePDKv100.img 镜像文件,以便 PhoenixSuit 烧录工具烧录到开发板的Norflash 中。
image.bat 脚本的具体运行流程,可通过文本编辑工具打开查阅和修改,如【图 4】。
图4:
在这里插入图片描述

3.4. Melis2.0 固件烧录

Melis2.0 使用的烧录工具是 PhoenixSuit,通过该工具将固件烧录到开发板的 Norflash 中,安装
PhoenixSuit 的操作文档请参看章节《固件烧录工具的安装》。下面我们介绍其中一种烧录方法。
【step1】双击 PhoenixSuit 图标运行 PhoenixSuit 软件,点击“一键刷机”选项卡,通过“浏览”按
钮选择想要烧录的固件的存放路径;
【step2】用 USB 链接线把电脑和开发板链接起来;
【step3】短路 Norflash 的 1、2 引脚,上电 1 到 2 秒钟之后即可松开,当烧录软件出现进度条,表明
PhoenixSuit 通过 USB 检测到开发板,之后烧录软件自动完成剩余的烧录工作;
【step4】等待烧录完成,会有弹窗提示烧录成功,表明烧录完成,之后就可重启设备运行新固件。
烧录期间和重启设备后,都可以通过查看开发板的调试串口输出的打印信息来判断软件的运行状态。
图5:
在这里插入图片描述

图6:
在这里插入图片描述

图7:
在这里插入图片描述

3.5.串口打印信息

安装串口工具(例如 SecureCRT)并打开,通过串口线接收 SoC 输出的 UART 串口打印信息,可以对软件的运行状态做判断,参考【图 9】。
UART 串口波特率是 115200bps,串口收发引脚 Rx/Tx 参看 workspace/eFex/sys_config.fex 文件中的uart_debug_port、uart_debug_tx、uart_debug_rx 参数,如【图 8】所示为窗口 1UART port1 的 PA2/PA3
脚。

图8:
在这里插入图片描述

图9:
在这里插入图片描述

下面简单介绍一下 SecureCRT 的串口使用步骤。
【step1】双击 图标打开 SecureCRT 软件,通过菜单“文件”->“快速链接”,或直接点击工具
栏的“快速链接”按钮 来直接启动快速链接,出现如【图 10】的提示窗口,点击“协议”条目出现下
拉菜单,选择“Serial”。
图10:
在这里插入图片描述

【step2】选择 Serial 协议之后,如【图 11】所示,选择指定的串口,把波特率设置成 115200bps,取消流控的勾选项,然后点击“连接”按钮即可。至此串口 SecureCRT 即可用于收发开发板 UART1 串口的数据。
图11:

在这里插入图片描述

3.6. Melis2.0 添加和调用一个模块

3.6.1. 为什么划分模块?

模块在 Melis2.0 中是一个独立的可执行文件,在介绍前文 SDK 文档目录时提到过模块的概念。一个模块在 SDK 中是如何存在的?它的代码组成基本结构如何?它是如何编译生成的?在固件中如何存在?又如何被加载调用?我们接下来介绍一下。
为使 SDK 结构层次清晰,Melis2.0 将内核操作系统、驱动、中间件、应用等区分开来,单独编译链接生成 ELF 可执行文件,方便各模块独立维护。一个模块需要使用时,要先加载其 ELF 可执行文件,才能使用,不使用时,则可以卸载掉。

3.6.2. UART 驱动模块

图12:
在这里插入图片描述

例如串口驱动,进入到 eMod/drv_uart 文件夹,可以看到如【图 12】所示的内容。

3.6.2.1.编译

【make.cfg】
1、通过包含 CROSSTOOL.CFG 指定了编译链接工具为 RVDS 以及 RVDS 工具在电脑上的存储路径;
2、通过 INCLUDES 指定了头文件的包含路径;
3、通过 LIBS 指定了库文件的包含路径;
4、通过 TARGET 指定了输出文件的名称和路径;
5、通过 SRCDIRS 指定了本文件夹及最大 3 层深度的子文件夹中所包含的所有文件名列表;
6、通过 LINK_SCT 指定了链接所使用的文件路径;
7、指定了其他编译选项;
【makefile】通过 SRCCS、SRCSS 过滤得到 SRCDIRS 变量所表示的文件名列表中的.c 和.s 后缀文件参与编译连接,通过 cygwin 进入本文件所在路径,输入 make clean;make 后按“Enter”键,就会执行此 makefile脚本,并将 ELF 可执行文件输出到 TARGET 所指定的路径下,默认 TARGET 是 SDK 目录下的workspace\suniv\rootfs\drv\文件夹,客户可按需自行修改。
图13:
在这里插入图片描述

3.6.2.2.加载和使用

uart.drv 生成之后,会在打包时一起合入.img 固件烧录到 Norflash 中,要使用运行该驱动,还需要
把该驱动加载到内存中,并注册给系统的设备管理器。
【magic.c】每个模块都有一个 magic.c 文件,本文件定义了一个结构体,需要注意的是“type”和“mif”
元素:
【type】type 是一个无符号单字节变量,emod.h 头文件以宏定义的形式为每个模块分配了独占的
“type”值,uart 按键驱动的 type 值是 EMOD_TYPE_DRV_UART,开发者如果想添加新模块,可自行添加宏定义,但与其他模块的值不可相同。
【mif】mif 表示模块的接口函数结构体,通过 esDEV_Plugin 函数加载驱动的过程中,依次调用
mif.MInit、mif.MOpen、mif.MIoctrl、mif.MClose 函数,完成 uart.drv 文件的加载、初始化、打开、设备注册和关闭。至此,开发者可通过打开设备注册名所获得的句柄来调用对应的注册函数,下面是一段 UART0驱动使用代码。

图14:
在这里插入图片描述

【esDEV_Plugin(“\drv\uart.drv”, 0, NULL, 0)】:如上文所属会根据"\drv\uart.drv"加载固件中
的 uart.drv 驱动到内存,然后调用 mif.init、mif.open、mif.ioctrol、mif.close 接口,在本串口驱动
中则对应的是 DRV_UART_MInit、DRV_UART_MOpen、DRV_UART_MIoctrl、DRV_UART_MClose。需要注意的是函数 DRV_UART_MIoctrl(__mp *mp, __u32 cmd, __s32 aux, void *pbuffer)在这个过程中的 4 各参数:
mp:DRV_UART_MOpen 的返回值;
cmd:DRV_CMD_PLUGIN
aux:对应的是 esDEV_Plugin 函数的第二个参数 0;
pbuffer:对应的是 esDEV_Plugin 函数的第三个参数 NULL;
【pfuart0 = eLIBs_fopen(“\BUS\UART0”, 0)】:需要注意的是,参照源码 DRV_UART_MIoctrl 在处理
DRV_CMD_PLUGIN 消息的过程中调用了 esDEV_DevReg 函数,将为类名为“BUS”、设备名为“UART0”的设备及其接口函数结构体变量 uart_devop 一同注册到内核中。为使 eLIBs_fioctrl 这个接口映射成uart_devop.Ioctl 接口,需要先通过 eLIBs_fopen 接口打开“\BUS\UART0”获得句柄,再将句柄传递给eLIBs_fioctrl 接口,则此时 eLIBs_fioctrl == uart_devop.Ioctl,传参也一一对应。
eLIBs_fwrite函数也因为pfuart0参数映射成了uart_devop.Write,eLIBs_fclose函数也因为pfuart0
参数映射成了 uart_devop.Close;所以上述示例代码中设置波特率和数据发送的工作的得以实现。
类似的如果调用 eLIBs_fread 附带参数 pfuart0 就会映射成为 uart_devop.Read。

3.6.2.3.UART0 的 PIN 脚配置

考虑到芯片引脚封装、PCBA 成本之类的问题,目前市面上的控制器大多采用了引脚复用的方式来减少芯片管脚的使用,全志平台的芯片也采用了引脚复用的方法。
引脚的配置文件是“sdkroot\workspace\suniv\eFex\sys_config.fex”,uart 部分的配置如【图 14】
所示,uart 驱动代码中的 esCFG_GetKeyValue 函数和 esCFG_GetGPIOSecData 函数会通过字符串传参来搜索下面的键值,需要使用的串口要把 uart_used 设置为 1,并将 IO 和复用功能号配置正确。本章侧重于讲解模块的加载和使用以及为配合 UART 测试所涉及到的内容,所以对 sys_config.fex 和 GPIO 不在此详述,相关内容可参考《Melis2.0 文档使用指南.xlsx》
图15:
在这里插入图片描述

`

-. 全志相关工具和资源

-.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

这篇关于全志ARM926 Melis2.0系统的开发指引①的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/4521

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、