总结:按照官方文档实现了基于python的OOT模块和基于C++的OOT模块,前者更简洁易读且配置文件只有一个定义端口的AML.yml文件,更推荐。
注意:管理ubuntu文件权限不够
sudo nautilus
注意:通过su root转为可以更高权限对文件夹操作
sudo root
一、通过Python语言实现:Creating Python OOT with gr-modtoo
来源:官方文档:https://wiki.gnuradio.org/index.php?title=Creating_Python_OOT_with_gr-modtool
1.创建OOT模块,名字为customModule
gr_modtool newmod customModule
创建并移动到gr-customModule目录
cd gr-customModule
查看模块下文件和文档
ls
2.创建基于python的OOT Block,名字为addSubSelect
gr_modtool add addSubSelect
定义block的参数
Enter block type: sync
Language (python/cpp): python
Language: Python
Block/code identifier: addSubSelect
Please specify the copyright holder: wenfeng
Enter valid argument list, including default arguments:
selector=True
Add Python QA code? [Y/n] n
Add C++ QA code? [Y/n] n
3.修改python文件
gedit python/customModule/addSubSelect.py &
5.修改YAML.yml文件,gnuradio-comparative使用YAML文件调用自定义块
gedit grc/customModule_addSubSelect.block.yml &
6.编译和安装块
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
7.可以打开gnuradio使用刚刚生成的python block了
在右边的GRC目录 customModule/addSubSelect
二、通过C++语言实现:Creating C++ OOT with gr-modtool
来源:官方文档:https://wiki.gnuradio.org/index.php?title=Creating_C%2B%2B_OOT_with_gr-modtool
注意:通过su root转为可以更高权限对文件夹操作
1.创建OOT模块,名字为ofdmsystem
gr_modtool newmod ofdmsystem
创建并移动到gr-ofdmsystem目录
cd gr-ofdmsystem
查看模块下文件和文档
ls
2.创建基于c++的OOT Block,名字为multDivSelect
gr_modtool add multDivSelect
定义block的参数
Enter block type: sync
Language (python/cpp): cpp
Language: C++
Block/code identifier: ofdmmodu
Please specify the copyright holder: wenfeng
Enter valid argument list, including default arguments:
bool selector=true
Add Python QA code? [Y/n] n
Add C++ QA code? [Y/n] n
3.修改c++头文件
gedit lib/multDivSelect_impl.h &
4.修改.cc文件以定义块
gedit lib/multDivSelect_impl.cc &
5.修改YAML.yml文件,gnuradio-comparative使用YAML文件调用自定义块
gedit grc/ofdmsystem_multDivSelect.block.yml &
6.编译和安装块
cd /home/grcppfile/gr-ofdmsystem
rm -rf build/
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
7.可以打开gnuradio使用刚刚生成的cpp block了
在右边的GRC目录 ofdmsystem/multDivSelect