开发板是创龙的rk3568板,rtstudio 2.2.8,rtthread 3.1.3
在测试例程时
目前只测试通过了IPI_SGI_TEST、SOFTIRQ_TEST;
在测试GPIO相关的中断测试GPIO_TEST、GPIO_IRQ_GROUP_TEST时,测试不通过。
测试环境为linux(核0,1)+hal(核2或3),其中查看运行起来时linux占用了核0、1;hal可以配置为核2或核3。
有几个疑问:
1、在linux+hal架构中,gpio的默认初始化应由谁完成;在此运行架构中是核0先启动,然后核2,核3先后启动,在linux的smp启动核1;此时gpio的初始化,应怎么配置?
2、若GPIO中断需要在某特定核处理,是否需要在irqsConfig[]中指定,实际指定了还是没法进入中断,不知是否和之前的【问题1】gpio的初始化有关。
3、GPIO_IRQ_GROUP_TEST这个测试是独立的吗?是否需要开启GPIO_TEST才能进行测试?这两个测试独立、或者组合都没有测试成功。
4、TIMER_TEST这个测试也没有进入中断,看代码和IPI_SGI_TEST、SOFTIRQ_TEST这两个测试相似,但是IPI、SOFTIRQ这两个是成功的;TIMER_TEST是哪里配置的问题?
另外RK3568有活跃的论坛吗?用kimi查的几个论坛也是没有什么人气,问题都没有什么人回答。
请各位专家帮帮忙。
以上的测试例程为HAL下的,没有用到rtt;
最新进展是,GPIO_IRQ_GROUP_EN_GROUP_TYPE这个在程序启动后,延时一段时间后在配置HAL_GPIO_IRQ_GROUP_Init,竟然成功了。而且跟CPU_GET_AFFINITY(1, 0)这个设置无关,实际修改这个的值,进行过各种cpuid值尝试,感觉没什么用?!
这个延时,怀疑还是linux那边启动有关。但是如果进行GPIO测试、或GPIO_IRQ_GROUP_EN_BANK_TYPE测试,则即使将延时加长,也依然测试不成功,不知道为什么?
如果使用rtt,则GPIO测试又是可以的。难道HAL例程只能用在全核都是HAL下才行?目前rtt的GPIO_IRQ_GROUP_xx测试还在尝试中,rtt这边没有hal_gpio_irq_group用到的hal_irq_handler的一些分发函数,需要将pin中断注册等换成rtt的才行。
HAL下测试不通过可能跟中断有关,一般来说中断初始化是由linux完成的,如果linux还没有将中断初始化完成的话,初始化就可能失败,所以需要加个延时。而rtt这侧应该会做处理,会等待linux间中断初始化完成后再启动系统