板卡起步走

板卡描述,描述了具体的硬件板卡上存在哪些硬件接口(比如,GPIO接口),以及应用可以操作的内置设备(比如,LED)。板卡描述是 Ruff APP 运行在具体板卡上的基石。

鉴于板卡描述文件通常会比较大,这里只介绍基础结构,请参考 Ruff MBD V1 ,了解一个具体的板卡描述文件如何编写。

前提条件

  • 如果还没有了解如何使用 Ruff 编写应用,可以阅读这里
  • 如果你希望在rap layout --visual 能够正确进行图形化展示,请在软件仓库上传并配置设备信息。参考这里了解如何在软件仓库添加设备。
  • 请查看板卡对应的技术手册,确定板卡上的接口类型和内置设备,以及相应的参数。

第一步:创建项目

在待创建项目的目录下,使用 rap 创建项目。注意,这里使用的初始化参数是 board,它会生成一些板卡相关的配置文件。

rap init board

根据提示,填写相应内容,一切顺利的话,一个新的目录就创建出来了,板卡项目就在其中。该命令还会生成 package.jsonboard.json

  • package.json 是软件包相关的配置信息
  • board.json 是板卡描述的相关信息

第二步:声明接口信息

board.json 是这个工程的主要文件,用以描述板卡信息。board.json 的基本结构如下:

{
"version": "2.0",
"id": "foo",
"model": "foo",
"devices": [
{
"id": "gpio-0",
"driver": "sys-gpio",
"inputs": {
"pin": {
"type": "number",
"args": {
"pin": 0
}
}
},
"outputs": {
"gpio": {
"type": "gpio"
}
}
}
],
"outputs": {
"gpio-0": "gpio-0/gpio"
}
}

在这个 board.json 里,我们声明了如下一些内容:

  • version,这个版本号是 board.json 的模式(schema)版本号,当前版本为2.0。
  • id,该板卡描述的 ID,它是你在创建工程的时候输入的工程名。
  • model,该板卡的所支持硬件的型号,建议在软件仓库上传设备信息后,将设备型号配置在这里。
  • devices,描述了板卡上所支持的硬件资源(接口或设备)。
  • outputs,描述了板卡对外导出的硬件资源,也就是其它外设可以使用的接口。

对于板卡开发者而言,最主要是要确定自己的 devicesoutputs

在这个例子里,我们描述了一个 GPIO 接口:

  • 板子上通常会有很多个 GPIO 接口,所以,这里,我们给它的 ID 命名为 gpio-0
  • 这个 GPIO 接口的驱动是 sys-gpio,这是由 RuffOS 提供的一个内置驱动。如果你的驱动是一个普通的驱动,需要通过 rap install --save 安装后,才可以在这里引用。
  • 这个驱动要求指定 GPIO 对应的 PIN,其类型是一个数字,参数是 pin 为 0。
  • 它会导出一个 GPIO 接口供其它外设使用,其名字为 gpio,类型为 gpio,在硬件布局的过程中,会根据这个类型进行匹配。

上面我们定义好了一个接口,接下来,我们在 outputs 里可以定义一个供外部使用的名字:

  • gpio-0,它对应的就是 gpio-0 导出的名为 gpio 的接口。

第三步:板卡测试

在板卡描述文件编写好之后,我们可以编写一个应用测试这个板卡。请参考起步走应用开发步骤,编写一个测试应用。在创建的应用项目的过程中,需要指定本地板卡项目。

mkdir hello-ruff
cd hello-ruff

rap init --local-board /path/to/your_board_project

在编写完应用之后,可以将应用部署到硬件板卡上进行测试,Ruff 移植过程请参考RuffOS 移植指南

对板卡而言,最主要的测试是关注这个板卡是否能够支持其它外设的接入,这个过程主要由硬件布局检测,运行如下命令:

rap layout

如果这个过程能够正常执行,说明你的板卡信息配置就成功了。

扩展步骤:发布驱动

经过开发和硬件测试,板卡的开发已经完成。如果想将这个板卡信息分享给别人,可以把驱动发布到软件包仓库。如果还没有申请软件包仓库的账号,请这里申请账号。

注意 如果你希望在rap layout --visual 能够正确进行图形化展示,请在软件仓库上传并配置设备信息。

在命令行里运行如下命令:

rap publish

一切顺利的话,你已经完成了一个板卡的开发,并将其发布出去。恭喜你,你已经成为了一个合格的板卡开发工程师。

下一步

想进一步了解 Ruff 板卡开发,请查看 Ruff 板卡描述文件