genromfs的使用及nuttx下romfs制作

=====>我的博客目录导航

前言

这篇文章仅仅是为了记录如何使用genromfs制作romfs然后在nuttx上直接应用,不会去详细介绍romfs的一系列特性

genromfs

首先去下载genromfs,也可去github上下载,我下载的是 0.5.2 26 Jun 2007 21:13这个版本;
下载下来后解压缩:
这里写图片描述

先来明确下我们的目的:
1.使用genromfs生成一个romfs;
2.编写一个nsh脚本,实现开机自动运行一个APP;

编写nsh脚本

#这里就实现一个之前编写好了的app
echo 
echo "The script of start up."
echo "author: <pengw>"
echo "e-mail: <alvin1991@foxmail.com>"
echo "h.vern: <v0.0.1.1318>"
echo "s.vern: <v0.0.1.1141>"
echo 
if  motor_ctrl -s
then
        echo motor_ctrl start.
else
        echo motor_ctrl start error.
fi

制作romfs

创建一个文件夹romfs,在该文件夹下创建init.d文件夹,再在init.d文件夹下创建文件rcS,目录结构如下:
romfs
|——init.d
|——rcS
我们现在rcS文件中写入上面的脚本,然后开始制作:
终端进入到romfs目录下,执行下面的命令;

$ genromfs -f romfs.img -d romfs -v -V "romfs"
0    romfs                [0xffffffff, 0xffffffff] 37777777777, sz     0, at 0x0     
1    .                    [0x804     , 0x141b49  ] 0040775, sz     0, at 0x20    
1    ..                   [0x804     , 0x140e9e  ] 0040775, sz     0, at 0x40     [link to 0x20    ]
1    init.d               [0x804     , 0x141af1  ] 0040775, sz     0, at 0x60    
2    rcS                  [0x804     , 0x141b43  ] 0100664, sz   240, at 0x80    
2    .                    [0x804     , 0x141af1  ] 0040775, sz     0, at 0x190    [link to 0x60    ]
2    ..                   [0x804     , 0x141b49  ] 0040775, sz     0, at 0x1b0    [link to 0x20    ]

然后就会在文件夹目录下发现生成的romfs.img;
这里写图片描述

Nuttx系统中注册romfs文件系统,需要romfs文件系统头指针,以便将文件系统编译链接进可执行文件。所以,需要将romfs映像文件生成一个头文件。

Linux系统下的”xxd”工具命令能够将标准输入或者给定的二进制文件输出到文件或者标准输出。关于”xxd”工具命令的详细使用方法可以通过”xxd -h”或者”man xxd”命令查看。如果使用”-i”参数,”xxd”可以输出C语言头文件形式的文件。

我们以上节中生成的romfs映像文件制作一个c语言头文件,头文件名为nsh_romfsimg.h, 而头文件nsh_romfsimg.h中的数组名为romfs_img。命令如下:

$ xxd -i romfs.img nsh_romfsimg.h

然后就会得到对应的头文件:
这里写图片描述

nuttx运行实验

Nuttx系统在nsh_main线程中,通过调用nsh_initialize()函数,进而调用nsh_romfsetc()向系统注册romfs,并挂载到默认的位置”/etc”目录。
1.注意,nsh_romfsetc()需要配置CONFIG_NSH_ROMFSETC;
2.另外,也需要系统支持ROMFS,即CONFIG_FS_ROMFS文件系统选项需要启用。
这里写图片描述
根据自己脚本的需要决定是否去掉Disable if-then-else-fi和Disable loops

我们需要做的是生成romfs头文件,将其放置到系统的某个位置(默认位置为apps/nshlib目录,如果配置了CONFIG_NSH_ARCHROMFS,则放置到config/< board >/inlclude目录),重新编译系统。将生成的romfs头文件nsh_romfsimg.h放置到apps/nshlib目录,确保头文件nsh_romfsimg.h中数组名为”romfs_img”,重新编译下载系统,并运行。

到这里romfs制作的启动文件就完成了~

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Ubuntu 18.04下搭建PX4环境的步骤如下: 1. 安装依赖项 在终端中输入以下命令: sudo apt-get update sudo apt-get install git zip qtcreator cmake build-essential genromfs ninja-build libopencv-dev libeigen3-dev -y 2. 克隆PX4代码 在终端中输入以下命令: cd ~ git clone https://github.com/PX4/Firmware.git --recursive 3. 安装PX4工具链 在终端中输入以下命令: cd ~/Firmware make px4_sitl_default gazebo 4. 配置环境变量 在终端中输入以下命令: echo "source ~/Firmware/Tools/setup_gazebo.bash ~/Firmware ~/Firmware/build/px4_sitl_default" >> ~/.bashrc source ~/.bashrc 5. 启动PX4仿真 在终端中输入以下命令: cd ~/Firmware make px4_sitl_default gazebo 6. 测试 在终端中输入以下命令: cd ~/Firmware make px4_sitl_default gazebo 以上就是在Ubuntu 18.04下搭建PX4环境的步骤。 ### 回答2: 在ubuntu18.04下搭建PX4环境,需要进行以下步骤: 1.更新安装包: sudo apt-get update sudo apt-get upgrade 2.安装GNUPG: sudo apt install gnupg 3.下载PX4 GPG key: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 045F9926759BAC3C 4.添加PX4软件源: sudo add-apt-repository "deb https://px4.io/repos/apt/ubuntu `lsb_release -cs` main" 5.更新软件源: sudo apt-get update 6.安装PX4: sudo apt install px4 7.安装PX4模拟器: sudo apt install sitl 8.安装ROS框架: sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt install curl curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo apt-get update sudo apt-get install ros-melodic-desktop-full 9.依照机型安装相应依赖包: sudo apt-get install protobuf-compiler libeigen3-dev libxml2-utils libopencv-dev libblas-dev liblapack-dev libboost-all-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev gstreamer1.0-plugins-good python-matplotlib python-argparse python-lxml python-yaml python-six python-dev python-numpy python-pip python-setuptools cmake build-essential sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe" sudo apt-get update 10.构建PX4: 注意,以下操作要在PX4源代码目录下执行 cd PX4-Autopilot make px4_sitl_default gazebo 11.启动PX4模拟器: ./Tools/gazebo_sitl.sh -i 0 -m iris gazebo 以上就是在ubuntu18.04下搭建PX4环境的完整步骤,如果按照以上步骤进行操作,就能够成功地搭建并启动模拟器,进行相关的开发调试。 ### 回答3: 在Ubuntu 18.04下搭建PX4环境,需要以下步骤: 1. 安装依赖项 在Ubuntu中,需要安装以下软件包: - git - cmake - python-jinja2 - python-pip - python-dev - build-essential - pkg-config - libgtk-3-dev - libcanberra-gtk3-module - libavcodec-dev - libavformat-dev - libswscale-dev - libreadline-dev - libudev-dev 可以通过以下命令进行安装: sudo apt-get install git cmake python-jinja2 python-pip python-dev build-essential pkg-config libgtk-3-dev libcanberra-gtk3-module libavcodec-dev libavformat-dev libswscale-dev libreadline-dev libudev-dev 2. 下载PX4源代码 安装完成依赖项后,需要从Github上下载PX4源代码,可以通过以下命令进行: git clone https://github.com/PX4/Firmware.git --recursive 3. 安装PX4的依赖项 PX4的依赖项可以通过以下命令进行安装: cd Firmware make px4_sitl_default gazebo 如果出现错误,请安装缺少的依赖项。常见的依赖项包括python-future、python-empy、python-toml等。 4. 编译PX4 编译PX4可以通过以下命令进行: cd Firmware make px4_fmu-v3_default 5. 启动PX4 启动PX4可以通过以下命令进行: cd Firmware make px4_sitl_default 在启动过程中可能会出现一些错误,常见的错误包括端口被占用、缺少权限等。需要根据实际情况进行处理。 以上就是Ubuntu 18.04下搭建PX4环境的步骤,希望能对大家有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值