0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

索尼Spresense拆箱与Spresense SDK运行测试

Q4MP_gh_c472c21 来源:lq 2019-02-04 14:13 次阅读

期盼了许久,终于收到了两个包裹,一个是主板,另一个为扩展板。

主板的包裹里只有CXD5602PWBMAIN1板和信息表,板的顶部包括一个复位按钮、四个用户LED、一个电源LED、一个启动恢复按钮、相机接口、索尼CXD5247电源管理音频模拟接口芯片(下图中的黑色),索尼CXD5602 hexa核心Arm Cortex-M4F微控制器支持GNSS - 在封装上看作D5602GG,两排2.54mm间距I / O接头,以及板极右边缘的GNSS天线

该板的底部采用MXIC MX25U6435F SPI NOR闪存,8MB容量,100针连接器,用于连接主板和扩展板,CP2102N USB到TTL芯片,以及用于电源和编程的微型USB端口

信息表主要包含法律术语,规范以及Spresense支持网站的链接和QR代码。

扩展板附带了类似的信息表,以及用于将主板固定到位的四个塑料钻头。

扩展板配有Arduino兼容接头,100针插座,用于连接主板,部分跳线,3.5mm音频插孔和micro SD卡插槽。

下图为电路板的正面,另一侧主要是两个芯片:72040电平转换器TI LSF0108八进制双向多电压电平转换器,当然也有着“扩展”用的微型USB端口。

两块板的组装都很简单,只需将四个黑色塑料钻头插入扩展板的安装孔中,将主板放在顶部,然后将其向下推。

如Spresense软件文档中所述,有两种方法可以使用Spresense板:

Spresense Arduino库- 使用许多开发人员熟悉的Arduino IDE。

Spresense SDK- 索尼最初的CXD5602芯片组开发环境,基于NuttX实时操作系统,并利用GNU Make工具链。低级API使开发人员能够优化内存使用,节省电源,控制多核处理等等,而Arduino库可能无法实现这一点。

下文针对Spresense SDK软件系统进行说明。

▲Spresense SDK的结构

让我们试着跟着说明指南在运行Ubuntu 18.04的笔记本电脑上调试运行它。

安装Spresense SDK

首先,我们需要在终端窗口中安装一些terminal windows:

1 sudo apt install git gperf libncurses5-dev flex bison gcc-arm-none-eabi genromfs pkg-config autoconf automake cmake

下一步是从nuttx-tools安装kconfig-frontends包:

1
2
3
4
5
git clone https://bitbucket.org/nuttx/tools.git
cd tools/kconfig-frontends/
./configure --disable-shared
make -j8
sudo make install

查看SDK源代码:

1
2
3
cd ../..
git clone --recursive https://github.com/sonydevworld/spresense.git
git submodule foreach git checkout master

USB连接

将当前用户添加到拨出组,然后注销以确保可以访问串行端口:

1 sudo usermod -a -G dialout $USER

是时候通过USB将主板连接到计算机了,这是内核日志的输出:

1
2
3
4
5
6
7
8
[99898.675476] usb 3-2: new full-speed USB device number 3 using xhci_hcd
[99898.849262] usb 3-2: New USB device found,idVendor=10c4, idProduct=ea60
[99898.849267] usb 3-2: New USB device strings:Mfr=1, Product=2, SerialNumber=3
[99898.849270] usb 3-2: Product: CP2102N USB to UART Bridge Controller
[99898.849272] usb 3-2: Manufacturer: Silicon Labs
[99898.849275] usb 3-2: SerialNumber:1601ea6abb61e811841264b55bfef139
[99898.851295] cp210x 3-2:1.0: cp210x converter detected
[99898.864393] usb 3-2: cp210x converter now attached to ttyUSB0

电路板被正确检测为具有10c4 VID和ea60 PID的CP210x转换器。

Spresense SDK安装程序

首先设置初始NuttX内核配置:

1
2
cd spresense/sdk
tools/config.py --kernel release

然后设置初始SDK配置:

1 tools/config.py examples/hello

输出:

1
2
3
4
5
6
7
WARNING: New loader v1.1.0 is required, please download and install.
Download URL : https://developer.sony.com/file/download/download-spresense-firmware-v1-1-000
Install command:
1. Extract loader archive into host PC.
./tools/flash.sh -e
2. Flash loader into Board.
./tools/flash.sh -l/home/jaufranc/edev/spresense/spresense/firmware/spresense -c

此时提示要求安装新的loader,由于下载URL需要EULA,因此无法从命令行来下载。但下载后,可以使用以下命令轻松将其闪存到电路板:

1
2
3
4
cd tools
mv ~/Downloads/spresense-binaries-v1.1.0.zip .
./flash.sh -e spresense-binaries-v1.1.0.zip
sudo ./flash.sh -l ../../firmware/spresense/ -c/dev/ttyUSB0

命令输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> Install files ...
install -b 115200
Install ../../firmware/spresense/loader.espk
Waiting for XMODEM (CRC or 1K) transfer. Ctrl-X to cancel.
....................................................................................................................115856 bytes loaded.
Package validation is OK.
Saving package to "loader"
updater# install -b 115200
Install ../../firmware/spresense/gnssfw.espk
Waiting for XMODEM (CRC or 1K) transfer. Ctrl-X to cancel.
..........................................................................................................................................................................................................................................................................................................................................................................................................................................................450336bytes loaded.
Package validation is OK.
Saving package to "gnssfw"
updater# sync
updater# Restarting the board ...
reboot

构建示例映像:

1
2
3
cd ..
make buildkernel -j8
make -j8

最终在当前目录中使用nuttx.spk固件:

1
2
ls nuttx.spk-l
-rw-r--r-- 1 jaufranc jaufranc 153776 ม.ค. 5 16:11nuttx.spk

刷新并运行固件

此时,系统要求刷新引导加载程序,但这项命令已经在上面完成了,所以我们可以刷flashtx.spk:

1 sudo tools/flash.sh -c /dev/ttyUSB0 nuttx.spk

命令输出:

1
2
3
4
5
6
7
8
9
10
>>> Install files ...
install -b 115200
Install nuttx.spk
Waiting for XMODEM (CRC or 1K) transfer. Ctrl-X to cancel.
.........................................................................................................................................................153776bytes loaded.
Package validation is OK.
Saving package to "nuttx"
updater# sync
updater# Restarting the board ...
reboot

运行hello world程序需要使用minicom或其他工具连接115200 8N1参数的串口:

1 minicom -D /dev/ttyUSB0 -b 115200 -s

在串行端口设置中禁用硬件流控制,然后按Esc并选择Exit退出。我们现在应该可以访问NuttX的NuttShell(NSH)shell。

键入hello以运行演示程序:

1
2
3
4
NuttShell (NSH)NuttX-7.22
nsh> hello
Hello,World!!
nsh>

成功,hello world程序的源代码可以在examples / hello / hello_main.c中找到,是典型的C语的hello world程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
****************************************************************************
* Included Files
****************************************************************************/
#include
#include
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* hello_main
****************************************************************************/
#ifdef CONFIG_BUILD_KERNEL
int main(int argc, FAR char *argv[])
#else
int hello_main(int argc, char *argv[])
#endif
{
printf("Hello, World!! ");
return 0;
}

作为参考,NuttX shell有一些类似于busybox中的命令:

1
2
3
4
5
6
7
8
9
10
11
12
nsh> help
help usage:help [-v] []
[ datehelpmksmartfs rmuname
? ddhexdump mhrmdir umount
basenamedfkillmount set unset
break echolsmvshusleep
cat printfmbmwshutdownxd
cdexecmkdir poweroffsleep
cpexitmkfatfs pstest
cmp false mkfifopwd time
dirname freemkrdreboottrue

Spresense中的示例项目

Hello World是开始运行很好的示例程序,但Spresense SDK还有其他更有趣的样本:

1
2
3
4
5
6
7
8
9
10
11
12
ls examples/
accelcameragyro press
adccolorsensor helloprime
alarmdecimator helloxxproximity
Application.mk dnnrt_lenet Kconfigpwm
asmp fft libexamples.aREADME.md
audio_player fwupdateLibTarget.mk sixaxis
audio_player_objif geofencelighttilt
audio_recorder gnsslte_http_get voice_call
audio_throughgnss_atcmdmagvoice_command
bluetooth_le_peripheralgnss_factoryMake.defswatchdog
bluetooth_sppgnss_pvtlog Makefile

每一个示例程序都都在Spresense NuttX的开发指南中详细地描述,但并未描述是何种类型或者是否新颖的样本。

某些示例项目需要安装额外的硬件,如相机附加装置,蓝牙LE附加装置,传感器附加装置等。可以通过向下滚动开发者网站的主页面找到这些列表。

由于音频和GNSS是电路板的一些主要功能,以下将尝试使用C++C语言编写的audio_player和gnss的示例程序。

Spresense音频播放器

构建和刷新过程与hello world程序相同,并在sdk目录中执行以下命令:

1
2
3
./tools/config.py examples/audio_player
make -j8
sudo tools/flash.sh -c /dev/ttyUSB0 nuttx.spk

该程序被加载到主板上,但我们需要一些额外的文件存储在micro SD卡中,其中包含音乐,播放列表和“worker”二进制文件,如audio_player示例目录中的README.txt文件所述:

之后,您可以在目录sdk / modules / audio / dsp中看到工作二进制文件'MP3DEC','WAVDEC'。

在选项指定的路径中存储工作二进制文件,播放列表和播放内容。

- 默认路径

worker二进制文件:/ mnt / sd0 / BIN

播放列表:/ mnt / sd0 / PLAYLIST内容:/ mnt / sd0 / AUDIO

作为播放列表的示例,PLAYLIST文件夹中有TRACK_DB.CSV。另外,作为内容示例,AUDIO文件夹中有Sound.mp3。Sound.mp3的采样频率为48000,位长16,编解码器MP3文件。

起初出现这些提示时,还存在困惑,但最终明白后将文件复制到用FAT32格式化的4GB micro SD卡:

1
2
3
4
5
6
cp ../examples/audio_player/AUDIO -R
cp ../examples/audio_player/PLAYLIST/ -R
mkdir /BIN
pushd modules/audio/dsp
cp MP3DEC WAVDEC /BIN/
popd

现在将microSD卡插入Spresense板,并连接扬声器,然后在NuttShell中启动应用程序。

1
2
3
4
5
NuttShell (NSH)NuttX-7.22
nsh> player
Start AudioPlayer example
Running time is 10sec
Running time is 10 sec

一切似乎按预期工作,但听不到任何音频。检查音频插孔连接是否接触不良,扬声器的功率和音量水平,但仍然没有声音。后来设想也许Spresense主板和扩展板之间可能存在不良接触,所以按下了主板最终成功了!终于可以听到Sound.mp3文件发出的哔声,有趣的是,微型SD卡确实有效,但不是音频。

GNSS样本

让试一试GNSS示例程序:

1
2
3
./tools/config.py examples/gnss
make -j8
sudo tools/flash.sh -c /dev/ttyUSB0 nuttx.spk

顺便说一下记得在运行flash.sh前退出minicom,否则会得到以下错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Traceback (most recent call last):
File "serial/serialposix.py", line 495, in read
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "flash_writer.py", line 504, in
File "flash_writer.py", line 446, in main
File "flash_writer.py", line 316, incancel_autoboot
File "flash_writer.py", line 263, in readline
File "serial/serialposix.py", line 505, in read
serial.serialutil.SerialException: read failed:device reports readiness to read but returned no data (device disconnected or multiple access on port?)
[8067] Failed to execute script flash_writer

另外还需要注意使用将menuconfig引入安装选项的选项来运行config.py。

1 ./tools/config.py -m examples/gnss

继续进行GPS测试,我试图将电路板靠近窗户,但我所处的建筑结构并不容易接收GPS信号,在1小时30分之后,我只获得了UTC时间。所以我搬到了户外,重新启动了电路板,一切都很顺利,我在24秒后获得了UTC时间:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
NuttShell (NSH) NuttX-7.22
nsh>
nsh>
nsh> gnss
Hello, GNSS(USE_SIGNAL) SAMPLE!!
start GNSS OK
>Hour:0, minute:0, sec:3, usec:497
>No Positioning Data
>Hour:0, minute:0, sec:4, usec:512
>No Positioning Data
>Hour:0, minute:0, sec:5,usec:15289
...
>No Positioning Data
>Hour:0, minute:0, sec:23, usec:507
>No Positioning Data
>Hour:0, minute:0, sec:24, usec:522
>No Positioning Data
>Hour:6, minute:59, sec:32, usec:554
>No Positioning Data
>Hour:6, minute:59, sec:33, usec:561
>No Positioning Data

并在1分40秒后定位数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
>Hour:7, minute:0, sec:47,usec:559
>No Positioning Data
>Hour:7, minute:0, sec:48,usec:533
>No Positioning Data
>Hour:7, minute:0, sec:49,usec:533
>No Positioning Data
>Hour:7, minute:0, sec:49,usec:769162
>LAT37.02.1428
>LNG95.36.5893
>Hour:7, minute:0, sec:50,usec:578
>LAT37.02.1428
>LNG95.36.5893
>Hour:7, minute:0, sec:51, usec:574

样本代码太长,无法在本次审核中详细介绍,但您可以在examples目录中找到源代码,Spresense SDK文档看起来结构清晰,非常详细和透彻。

总结

我不得不承认Spresense主板上进行的一切评测都很顺利,开发的文档看起来很棒。但对于大多数项目,可能需要附加板,因为在没有任何类型的无线或有线连接的情况下,必须有许多需要GNSS和音频的应用。

索尼Spresense主板在Framos US上售价65美元,也可以在45美元左右找到扩展板,很快就会有一个500万像素的摄像头板将在本月晚些时候推出。Spresense相机售价在计算增值税后29欧元,传感器和蓝牙附加板由ROHM制造,可以单独购买,但目前只在日本购买。希望他们能够找到一种更简单的订购方法,可能在不久的将来使用完整的开发套件。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 转换器
    +关注

    关注

    27

    文章

    8701

    浏览量

    147146
  • 电路板
    +关注

    关注

    140

    文章

    4960

    浏览量

    97779
  • 索尼
    +关注

    关注

    18

    文章

    3193

    浏览量

    104848

原文标题:索尼Spresense拆箱与Spresense SDK运行测试

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    式DSP实验TL6748-TEB-A

    的浮点C6000 DSP可式新型嵌入式教学实验,提供了丰富的教学实验例程,并提供视频教程,十分适合高校以及研究所等实验机构。可式DSP实验TL6748-TEB-A可以用于师生项
    发表于 11-04 23:11

    南向设备:小黄车、组装、配件测试

    南向设备:小黄车、组装、配件测试!小黄车组装了一遍,首先是,认识配件,组装,如下图所示:初始芯片上有设置小黄车的功能,一个是在线跑,
    发表于 12-07 18:25

    转:小黄车、组装、配件测试!

    原文链接:https://harmonyos.51cto.com/posts/1994小黄车,认识配件,组装,如下图所示:
    发表于 12-09 19:55

    Java中装箱和是如何实现的

    一。什么是装箱?什么是? 二。装箱和是如何实现的 三。面试中相关的问题 一。什么是装箱?什么是
    发表于 09-27 10:07 0次下载

    基于射频识别机器人的电能表纸箱过程

    射频识别机器人技术是一种在现代工业广泛使用的技术,具有高度自动化和智能化的特点,能最大限度的节约人力和物力资源,文中基于机器人技术研究了电能表纸箱的过程,分析了机器人技术在电能表纸箱
    发表于 11-14 10:48 9次下载
    基于射频识别机器人的电能表纸箱<b class='flag-5'>拆</b><b class='flag-5'>箱</b>过程

    贸泽与Sony Electronics签署协议 为IoT边缘解决方案带来Spresense开发板

    Spresense主板(分为美国和日本版、欧洲版以及中国版) 采用Sony拥有GPS功能的强大多核CXD5602微控制器。这款兼容Arduino 的开发板是一个多功能的紧凑型解决方案,可单独使用,也可与扩展板配合使用。
    发表于 03-04 15:12 779次阅读

    Spresense智能浮标开源分享

    电子发烧友网站提供《Spresense智能浮标开源分享.zip》资料免费下载
    发表于 10-24 09:59 0次下载
    <b class='flag-5'>Spresense</b>智能浮标开源分享

    Spresense GPS提供支持的宠物追踪器

    电子发烧友网站提供《由Spresense GPS提供支持的宠物追踪器.zip》资料免费下载
    发表于 12-30 09:36 4次下载
    由<b class='flag-5'>Spresense</b> GPS提供支持的宠物追踪器

    使用Spresense及其音频功能来录制音频信号

    电子发烧友网站提供《使用Spresense及其音频功能来录制音频信号.zip》资料免费下载
    发表于 01-05 09:30 0次下载
    使用<b class='flag-5'>Spresense</b>及其音频功能来录制音频信号

    使用Sony Spresense和人工智能识别不良驾驶习惯

    电子发烧友网站提供《使用Sony Spresense和人工智能识别不良驾驶习惯.zip》资料免费下载
    发表于 02-06 10:33 0次下载
    使用Sony <b class='flag-5'>Spresense</b>和人工智能识别不良驾驶习惯

    带有Spresense的情感和导航可穿戴设备

    电子发烧友网站提供《带有Spresense的情感和导航可穿戴设备.zip》资料免费下载
    发表于 02-06 10:39 0次下载
    带有<b class='flag-5'>Spresense</b>的情感和导航可穿戴设备

    Spresense的AI相机

    电子发烧友网站提供《带Spresense的AI相机.zip》资料免费下载
    发表于 06-09 14:16 1次下载
    带<b class='flag-5'>Spresense</b>的AI相机

    Spresense多核质数计算器开源

    电子发烧友网站提供《Spresense多核质数计算器开源.zip》资料免费下载
    发表于 06-13 11:48 0次下载
    <b class='flag-5'>Spresense</b>多核质数计算器开源

    Spresense GPS摄像头开源分享

    电子发烧友网站提供《Spresense GPS摄像头开源分享.zip》资料免费下载
    发表于 07-11 10:01 0次下载
    <b class='flag-5'>Spresense</b> GPS摄像头开源分享

    机械免压力测试方案

    机械免压力测试方案
    的头像 发表于 01-20 08:08 415次阅读
    机械免<b class='flag-5'>拆</b>压力<b class='flag-5'>测试</b>方案