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

    文章

    8208

    浏览量

    141877
  • 电路板
    +关注

    关注

    140

    文章

    4622

    浏览量

    92526
  • 索尼
    +关注

    关注

    18

    文章

    3021

    浏览量

    104011

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

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

收藏 人收藏

    评论

    相关推荐

    手机测试屏蔽介绍

    `手机测试屏蔽手机测试屏蔽是利用导电或者导磁材料制成的各种形状的屏蔽体,将电磁能力限制在一定空间范围内,用于抑制辐射干扰的金属体。并对传导和辐射进行处理,以实现给被测无线通讯设备提
    发表于 04-10 18:17

    式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

    Firefly-RK3399及系统初步设置相关资料分享

    1、Firefly-RK3399及系统初步设置终于收到了期待的Firefly-RK3399板子,在拿到板子后,便立刻进行了,将板子搭了起来,进行了一些简单的设置,为接下来做准备
    发表于 08-29 17:59

    一文知道Zynq平台运行SDK程序错误的解决办法

    Zynq平台运行SDK程序错误的解决办法,具体的跟随小编一起来了解一下。
    的头像 发表于 07-14 06:05 7656次阅读

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

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

    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摄像头开源分享