目标是希望RISC-V可以在A7双核工作的同时,启动裸机程序,做一些实时控制类的工作。
目前最新T113-I(应该就是R528吧?)手册已官宣同时支持A7双核+RISC-V、同时具有HIFI4 DSP
HIFI4编译器、开发环境都是闭源,需要找Cadence买,挺复杂
今天尝试了一下在A7核Linux上能否启动RISC-V核,目前还没成功
看看大家有没有什么想法。
在T113已经成功通过ARM核启动系统,进入Linux的前提下,RISC-V核的裸跑工作难度应该不大,不需要初始化内存等底层资源,只需要想办法让RV核复位跳转到启动向量即可
启动向量在哪里?看手册是0x06010004/8两个寄存器
1、编译器
https://occ.t-head.cn/community/download?id=4049193882418745344
平头哥官网,Xuantie-900-gcc-elf-newlib-x86_64-V2.4.0-20220428.tar.gz
通过xboot同学发布的D1裸跑demo,改一下ld文件就可以适配
2、时钟
要把RISC-V_CFG_CLK时钟打开,才可以操作到0x06010000地址
3、PLIT rv核独立中断控制器,目前在T113 Linux内核上好象没有启用,也没有在CCU上找到对应的开关
4、主要相关寄存器
0x02101D00 - 1D0C CCU RISC-V时钟控制
0x06010000 RISC-V CFG配置寄存器
5、根据uboot中看到的dsp核启动代码,大概推测启动rv核思路是
停止riscv核时钟
设置risc-v核时钟频率
打开riscv核时钟
复位risc-v核
设置risc-v核复位向量
接触risv-v核复位
目前还没成功,主要是没找到RISC-V核复位相关的寄存器
离线
HiFi4就是Xtensa加一些扩展,gcc-xtensa都支持,但是具体启用哪一个需要自己配置,魔改ESP32编译器就好。
国外大神已经通过crosstools-ng搞出来了。
离线
这个是说rv和arm共享总线么 厉害了
离线
@jjldc
rv核是不是要先置复位 然后各种设置 最后在释放复位
离线
还有一个地方需要研究,就是efuse部分,这个东西有可能搞手脚的。
离线
@jjldc
rv核是不是要先置复位 然后各种设置 最后在释放复位
比较尴尬的是,就卡在没找到RISC-V_RESET寄存器,DSP_RESET都有,RV核复位没有
一般就是给时钟,复位核-写reset vector - 释放,起码PC可以跳过去跑第一条指令
离线
T113-i 和 D1 pin2pin,和R528封装不同。
过几天我找代理要几个芯片贴到MQ-Pro上玩玩。
歪朵拉开源硬件: https://widora.cn
淘宝: https://widora.taobao.com/
离线
这就厉害了,玩了几天113,裸机卡在如何初始化SDRAM了。
离线
你们有HIFI4-DSP User Manual 和 Compiler ? 看来这个DSP好厉害 !
离线
你们有HIFI4-DSP User Manual 和 Compiler ? 看来这个DSP好厉害 !
没弄到
今天问原厂是说A7和RISC-V二选一,不能共存
不是很确定
用risc-v的时候不就等于D1了么
离线
HIFI4 DSP 有人调试过吗?我们打算用这个DSP来做算法,但现在还没有什么头绪。
离线
RISC 内核是否与 H3 中的 AR100 (https://linux-sunxi.org/AR100) 相同?
离线
坐等大佬开核。
离线
高级应用.大佬研究挺深啊
离线
HIFI4 DSP 有人调试过吗?我们打算用这个DSP来做算法,但现在还没有什么头绪。
DSP已经用起来了
这个需要跟全志直接签协议,提供license、开发环境、支持包等资源,个人还不好弄
离线
xiongxinjian 说:HIFI4 DSP 有人调试过吗?我们打算用这个DSP来做算法,但现在还没有什么头绪。
DSP已经用起来了
这个需要跟全志直接签协议,提供license、开发环境、支持包等资源,个人还不好弄
看来这是HIFI Xtensa Compiler ?
https://bbs.aw-ol.com/topic/1424/share/4
离线
@audiomonster
是的,非开源编译器
离线
不开源,能开Dsp核能用就行
离线
@jjldc
现在启动risc-v和a7核了吗
离线
@jjldc
现在启动risc-v和a7核了吗
已经搞定了,另外重置riscv的为0x0f20
离线
想研究的,看这个代码,不贴代码的都是耍流氓。
{
// The Hotplug Flag Register is 0x070005DC.
// The Soft Entry Address Register is 0x070005E0.
// la a0, 0x02500000
// la a1, 0x23
// sb a1, 0 (a0)
// xxx: j xxx
// Test: write byte to 0x02500000 = UART0 data tegister
static const uint32_t code [] = {
0x02500537, // 37 05 50 02
0x0230059B, // 9B 05 30 02 │
0x00B50023, // 23 00 B5 00
0x0000006F, // 6F 00 00 00,
};
* (volatile uint32_t *) 0x070005DC = 0*0xFA50392Fu; // Hotplug Flag Register
* (volatile uint32_t *) 0x070005E0 = (uintptr_t) code; // Soft Entry Address Register
dcache_clean_all();
printhex(0x06000000, (void *) 0x06000000, 0x10000);
//CCU->RISC_GATING_REG
CCU->RISC_CFG_BGR_REG |= (1u << 16) | (1u << 0);
(void) CCU->RISC_CFG_BGR_REG;
PRINTF("CCU->RISC_CFG_BGR_REG=%08" PRIX32 "\n", CCU->RISC_CFG_BGR_REG);
RISC_CFG->RISC_STA_ADD0_REG = (uintptr_t) code;
RISC_CFG->RISC_STA_ADD1_REG = 0;//(uint32_t) (uintptr_t) code >> 32;
//memset(RISC_CFG, ~ 0u, sizeof * RISC_CFG);
PRINTF("CCU->RISC_GATING_REG=%08" PRIX32 ", CCU->RISC_CFG_BGR_REG=%08" PRIX32 "\n", CCU->RISC_GATING_REG, CCU->RISC_CFG_BGR_REG);
PRINTF("RISC_CFG->RISC_STA_ADD0_REG=%08" PRIX32 ", RISC_CFG->RISC_STA_ADD1_REG=%08" PRIX32 "\n", RISC_CFG->RISC_STA_ADD0_REG, RISC_CFG->RISC_STA_ADD1_REG);
//printhex32(RISC_CFG_BASE, RISC_CFG, sizeof * RISC_CFG);
local_delay_ms(3000);
//PRINTF("CCU->RISC_RST_REG=%08" PRIX32 "\n", CCU->RISC_RST_REG);
CCU->RISC_RST_REG = 0x16AA0001u;
(void) CCU->RISC_RST_REG;
//PRINTF("CCU->RISC_RST_REG=%08" PRIX32 "\n", CCU->RISC_RST_REG);
//ASSERT(CCU->RISC_RST_REG & 0x01u);
for (;;)
;
}
最近编辑记录 xboot (2023-05-26 11:40:19)
离线
这个T113-S3里面也是同样吗?
离线
当MCU使用吗?
离线
I am an author of this test code.
Unfortunately, risc-v core (may be exising) of t113-s3 still under reset...
I am play with other toys (lvds, mipi-dsi outputs).
最近编辑记录 GenaSPB (2023-07-15 02:31:35)
离线
你们有HIFI4-DSP User Manual 和 Compiler ? 看来这个DSP好厉害 !
Local hobbyists make windows - hosted xtensa gcc. Under tests with t113-s3.
xtensa-hifi4-elf-gcc.exe (crosstool-NG 1.25.0) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
离线
RISC_CFG dumps on two boards:
F133-A:
06010000 00010000 4006E910 00000000 00000000 00000013 00000021 00000003 00000002
06010020 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
06010040 00000000 00000000 00000000 00000000 400010D8 00000000 00000000 00000000
06010060 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
06010080 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
060100A0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
060100C0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
060100E0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
06010100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
06010120 00000000
T113-s3:
06010000 00010000 400F95E0 00000000 00000000 00000013 00000021 00000003 00000002
06010020 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
06010040 00000000 00000000 00000000 00000000 BFFBBFF2 000000F7 00000000 00000000
06010060 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
06010080 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
060100A0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
060100C0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
060100E0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
06010100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
06010120 00000000
On T113-s3 RETITE_PC0_REG and RETITE_PC1_REG looks like meaningful
离线
Each power-up of T113-s3 slightly change bits, visible in RETITE_PC0_REG and RETITE_PC1_REG
离线
xiongxinjian 说:HIFI4 DSP 有人调试过吗?我们打算用这个DSP来做算法,但现在还没有什么头绪。
DSP已经用起来了
这个需要跟全志直接签协议,提供license、开发环境、支持包等资源,个人还不好弄
大佬测试过这个DSP吗 做一般的信号处理 性能怎么样?
离线
Each power-up of T113-s3 slightly change bits, visible in RETITE_PC0_REG and RETITE_PC1_REG
你觉得 T113-S3 也有RISC-V ?
离线
@GenaSPB
xtensa-hifi4-elf-gcc.exe哪里可以下载呀
离线
离线
@GenaSPB
谢谢
离线
In mentioned theme, hifi4 gcc with call0 abi (non-wimndowed abi) shown. Significantly less support at runtime need.
最近编辑记录 GenaSPB (2023-10-01 01:57:30)
离线
是不是先设定 RISCV_CFG 的 StartAddress 然后撒开复位的?
试试 将程序代码放在 RSCV_BROM 0x0600_0000-0x0600_FFFF 64KB,RV核视图是 0x0000_0000-0x0000_FFFF
然后 StartAddress 为默认 0x0000 这样启动,看能行吗
离线
I can not putting anything in BROM. It is a read only memory
最近编辑记录 GenaSPB (2023-10-10 14:26:54)
离线
弄了一个T113-i的实物,找到了一些线索,
官方SDK里有个叫做 brandy 的二级boot(ROM算一级的话),里面有闭源的DDR初始化代码啥的,在./spl-pub/board/t113_i/ 中
libsun8iw20p1_fes.a
libsun8iw20p1_nand.a
libsun8iw20p1_sboot.a
libsun8iw20p1_sdcard.a
libsun8iw20p1_spinor.a
实际是个ELF的object文件,
看下符号表,其中有
sunxi_assert_arisc
sunxi_deassert_arisc
怀疑有关启动RISCV
反汇编结果
Disassembly of section .text.sunxi_deassert_arisc:
00000000 <sunxi_deassert_arisc>:
0: b507 push {r0, r1, r2, lr}
2: 4808 ldr r0, [pc, #32] ; (24 <sunxi_deassert_arisc+0x24>)
4: f7ff fffe bl 0 <sunxi_deassert_arisc>
8: 4a07 ldr r2, [pc, #28] ; (28 <sunxi_deassert_arisc+0x28>)
a: 6813 ldr r3, [r2, #0]
c: 9301 str r3, [sp, #4]
e: 9b01 ldr r3, [sp, #4]
10: f043 0301 orr.w r3, r3, #1
14: 9301 str r3, [sp, #4]
16: 9b01 ldr r3, [sp, #4]
18: 2000 movs r0, #0
1a: 6013 str r3, [r2, #0]
1c: b003 add sp, #12
1e: f85d fb04 ldr.w pc, [sp], #4
22: bf00 nop
24: 00000030 .word 0x00000030
28: 07000400 .word 0x07000400
是将 0x07000400 寄存器[0:0]置了一个 'b1
这个寄存器在 UserManual 中说是位于 APBS0 域的 R_CPUCFG 区,但功能未说明,估计很可能得用这个,
其他还有 R_PPU R_PRCM R_TIMER R_TWD 貌似是同组,同样,UserManual 中没有一丁点解释,
如果关键功能与此未公开解释的部分有关,则会无解,只有原厂知道了
离线
验证有效
RISCV启动至少需要如下步骤:
1.CCU配置 RISC-V_CFG 0x02001000+0x0D0C Bus Gating Reset Register = 0x00010001(RISCV_CFG_RST=DeAssert, RISC-V_CFG_GATING=Pass)
2.R_CPUCFG bit0 DeAssert(Disassembly from brandy SPL in SDK),此步骤貌似并没有影响
证明:
=> md 0x06010050
06010050: fefbffee 000000ff 00000000 00000000 ................
06010060: 00000000 00000000 00000000 00000000 ................
06010070: 00000000 00000000 00000000 00000000 ................
06010080: 00000000 00000000 00000000 00000000 ................
06010090: 00000000 00000000 00000000 00000000 ................
060100a0: 00000000 00000000 00000000 00000000 ................
060100b0: 00000000 00000000 00000000 00000000 ................
060100c0: 00000000 00000000 00000000 00000000 ................
060100d0: 00000000 00000000 00000000 00000000 ................
060100e0: 00000000 00000000 00000000 00000000 ................
060100f0: 00000000 00000000 00000000 00000000 ................
06010100: 00000000 00000000 00000000 00000000 ................
06010110: 00000000 00000000 00000000 00000000 ................
06010120: 00000000 00000000 00000000 00000000 ................
06010130: 00000000 00000000 00000000 00000000 ................
06010140: 00000000 00000000 00000000 00000000 ................
=>
RETIRE_PC0_REG 有运行过的PC位置
最近编辑记录 duanlin (2023-11-03 14:17:53)
离线
买来的板子没有开源uboot,有没有大佬有原厂SDK的,用来学习一下
离线
RISV-V 跑裸机,有工程吗?
离线
用T113-I的RISC核跑Linux吗?成功了吗?
离线