这应该是世界上第一款可以运行在RISC-V64上的IPPBX
SwitchPi的OAKR2板子支持2个Dahdi通道,一个FXO,一个FXS口,通过几天研读D1的数据手册,终于把D1的DMA, I2S, SPI驱动跑起来了,系统基于buildroot2021 (感谢https://gitee.com/weidongshan/neza-d1-buildroot),DMA驱动Dahdi,最大支持16个Dahdi通道(后续加入E1/T1卡的支持),运行Asterisk16,详细参见https://www.bilibili.com/video/BV1Rv411373f/
xiaowen 发布的最佳帖子
-
在D1开发板上运行Dahdi和Asterisk IPPBX
xiaowen 发布的最新帖子
-
回复: 在menuconfig页面上启用luci后编译失败
@xiaowen
另外,rpcd会报一个ld undefined crypt issue,如下
make[5]: Entering directory '/home/liyq/tina-d1-h/out/d1-h-nezha/compile_dir/target/rpcd'
[ 41%] Linking C executable rpcd
/home/liyq/tina-d1-h/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/../lib/gcc/riscv64-unknown-linux-gnu/8.1.0/../../../../riscv64-unknown-linux-gnu/bin/ld: CMakeFiles/rpcd.dir/session.c.o: in functionrpc_login_test_login': /home/liyq/tina-d1-h/out/d1-h-nezha/compile_dir/target/rpcd/session.c:874: undefined reference to
crypt'
collect2: error: ld returned 1 exit status直接在package 下rpcd的Makefile中加上下面一行即可
TARGET_LDFLAGS += -lcrypt -
回复: 在menuconfig页面上启用luci后编译失败
[最近用也在用Luci在Tina上,也碰到这个问题,这个issue主要是我们在写程序时用到不定长的buffer时要对最大长度预留一些余量,比如Luci用的的firewall 中
char buf[sizeof("65535-65535\0")]; sprintf(buf, "%u-%u", port->port_min, port->port_max);
我们要把两个uint16(范围是0到65535)连接并转为字符,上面定义是没有问题的,而且加了一个\0字符余量,正常GCC可以看到不报错,但是不知道为什么Tina的GCC看不到就奇怪了,不过改为snprintf就可以了,如下:
snprintf(buf, sizeof("65535-65535\0"), "%u-%u", port->port_min, port->port_max);
你也可以只用用下面的patch文件
0001-fix-luci-firewall-tina-gcc-werror-issues.patch
[ 7%] Building C object CMakeFiles/firewall3.dir/main.c.o
[ 14%] Building C object CMakeFiles/firewall3.dir/options.c.o
[ 21%] Building C object CMakeFiles/firewall3.dir/defaults.c.o
[ 28%] Building C object CMakeFiles/firewall3.dir/zones.c.o
[ 35%] Building C object CMakeFiles/firewall3.dir/forwards.c.o
[ 42%] Building C object CMakeFiles/firewall3.dir/rules.c.o
[ 50%] Building C object CMakeFiles/firewall3.dir/redirects.c.o
[ 57%] Building C object CMakeFiles/firewall3.dir/snats.c.o
[ 64%] Building C object CMakeFiles/firewall3.dir/utils.c.o
[ 71%] Building C object CMakeFiles/firewall3.dir/ubus.c.o
[ 78%] Building C object CMakeFiles/firewall3.dir/ipsets.c.o
[ 85%] Building C object CMakeFiles/firewall3.dir/includes.c.o
[ 92%] Building C object CMakeFiles/firewall3.dir/iptables.c.o
[100%] Linking C executable firewall3 -
回复: 在menuconfig页面上启用luci后编译失败
@qianchenzhumeng
@应该也可以把告警转错误的编译选项 Werror 去掉,不过我还没找到地方。
make -i 可以disable Werror,你试试下面的命令编译一下
make -i -j$(($(nproc)+1)) V=sc ; echo -e '\a' -
请教D1H I2S slave mode 如何配置
项目需要把D1h的i2s BCLK和LRCK设置为slave模式,也就是codec提供BCLK和LRCK。按照D1H数据手册显示是支持slave模式的,但是只在I2S/PCM control register(offset 0x0000) 653页看到可以设置BCLK和LRCK为input mode,其他地方没有设置slave模式。
按照数据手册将BCLK和LRCK设置为input后,发现数据没有传输,dma没有中断产生。但是将BCLK设置为input,LRCK output后,数据可以传输,dma中断也正常,比较奇怪,感觉应该还有地方需要配置,请问如何正确配置D1H的slave模式?
另外,D1H设置为master模式没问题!
-
Tina Linux sdk 内核模块不能编译
尝试自己编译一个内核模块,但是Tina 不运行编译,直接忽略,prepare是可以把文件copy到编译目录,compile没有任何反应。
试过Allwinner目录下的,不是内核模块,都可以编译,但是内核模块的都不能编译。
诸位又碰到此类问题的吗?
谢谢了! -
回复: 在D1开发板上运行Dahdi和Asterisk IPPBX
@caozilong
Asterisk本身是一个电话交换系统,它可以交换FXS<-->FXO, FXO<-->SIP, FXS<-->SIP, SIP<-->SIP.