jeffwei
jeffwei

注册于 10 years ago

回答
1
文章
0
关注者
0

用mdk试了一下,一加载就死了:

\ | /
- RT - Thread Operating System
/ | \ 2.1.0 build May 23 2017
2006 - 2017 Copyright by rt-thread team
found part[0], begin: 32256, size: 14.857GB
dfs initialized!
msh />psr: 0x41000000
pc: 0xc1002ccc
lr: 0x0800fca1
r12: 0x00000000
r03: 0x00000000
r02: 0xc1002ccd
r01: 0x00000000
r00: 0x00000000
hard fault on thread: basicapp
thread pri status sp stack size max used left tick error
-------- --- ------- ---------- ---------- ------ ---------- ---
basicapp 30 ready 0x00000048 0x00002000 01% 0x0000000a 000
led 12 suspend 0x00000078 0x00000100 46% 0x00000005 000
tshell 10 suspend 0x0000008c 0x00000400 20% 0x0000000a 000
tidle 31 ready 0x0000005c 0x00000200 17% 0x0000001e 000
timer 4 suspend 0x00000060 0x00000200 18% 0x00000009 000
main 10 suspend 0x00000084 0x00000800 43% 0x00000012 000


吐槽一下mdk速度问题,同样的工程,mdk编译链接要一刻钟,IAR只要一分钟。
------------------------------------------------------------------------------------
忘了一条,由于编译时报错,暂时屏蔽了LIBC代码
/* import the full stdio for printf */
#if defined(RT_USING_MODULE) && defined(__MICROLIB)
#error "[RT_USING_LIBC] Please use standard libc but not microlib."
#endif

在rtconfig.py配置了GCC路径的,缺少/bin

# toolchains
EXEC_PATH = 'C:/Program Files (x86)/GNU Tools ARM Embedded/5.4 2016q3'


EXEC_PATH = 'C:/Program Files (x86)/GNU Tools ARM Embedded/5.4 2016q3/bin'

有啊,内部闪存做成U盘,rtt系统做成Bin文件用都可以。

支持,希望有一天能和楼主一样为社区做出贡献.

老大说的对。
另外注意你的卡是SDHC还是SDXC.我才遇到过,RTT的elm版本较老,不支持32G以上的SDXC卡,32G以上要exfat,新版fatfs支持,由于最近打算换工作,没空移植,最后买了个16G的卡测试的,在STM32F103和STM32F767上都可以。
如果只有32G以上的卡,那么建立一个小于32G的fat32分区也是可以用的,试过了。

谢谢回复,昨晚9点半出差到北京了,板子带着,刚刚试了一下
open函数前面用SCB_CleanInvalidateDCache(); 清理了cache
结果没用;晚点有空再追踪一下,不知道别的平台有无这个问题;
我的STM32F103开发板送人了,咱们论坛的407板子还没空实验。
-------------------------------------------------------------------
更新一点,刚才看了realtouch的代码,这个RT_DFS_ELM_REENTRANT是打开的;
说明之前407平台是正常的,这个问题可能是767上出的问题,或者DFS组件代码改了很多;
---------------------------------------------------------------------------------------------
再次更新一下;老大是对的,注释了//CPU_CACHE_Enable();这句就好了;
看来清除Dcache不够

led终于闪烁了
之前为了配合rtt的ICF文件,IAR里面加了VECT_TAB_SRAM。
后来为了找问题,用了stm32cubemx的icf文件,忘了删除VECT_TAB_SRAM。
然后单步死机,发现死在RCC初始化,因为定义了RT_USING_USER_MAIN,
components.c里面调用了rtthread_startup();
mai.c里面有来一次,第二次初始化RCC就死了。
修改main.c后好了

int main(void)
{
led_hw_init();
led_init();
//rt_hw_interrupt_disable();
//rtthread_startup();
while(1)
{
rt_thread_delay(RT_TICK_PER_SECOND/4);
}
/* put user application code here */
return 0;
}

从map文件看,heap按照icf文件分配的

"P2", part 2 of 3:                           0x600
CSTACK 0x200001b8 0x400
CSTACK uninit 0x200001b8 0x400
HEAP 0x200005b8 0x200
HEAP uninit 0x200005b8 0x200
- 0x200007b8 0x600

HEAP$$Base 0x200005b8 -- Gb - Linker created -
HEAP$$Limit 0x200007b8 -- Gb - Linker created -

开了一天会,晚上再看了下,发现STM32F103运行到rt_current_thread = to_thread;后,
线程是init,上一个idle+12,下一个是led+12。
而STM32F767上的下一个是rt_object_container+4

应该参考stm32f10x或者stm32f0x的吧,看你是哪种内核了。

还真没有,这个是我的错。

在realboard目录下执行
scons --target=ua

然后把apps目录中的bsp目录设置到realboard来,就可以编译出module了。

验证了,成功。我之前也看到了 tools目录下ua.py文件,把rtua给成ua,结果还是不行,原来是我用法不对,是target

rtua没找到,不过解决stm32f103问题,在rtconfig.py里面BSP = 'stm32f10x'下面加了一行
PLATFORM = 'gcc'
前几天事情多,比较浮躁,今天早点快递没到,工作没法进行就搞这个,沉下心就解决了。
另外我在哈密,有要干果的吱一声哦。估计还要待上半个月。

编译出mo文件了,方法如下:
注释3行

17#from rtua import GetCPPPATH
18#from rtua import GetCPPDEFINES
44#CPPPATH = GetCPPPATH(BSP_ROOT, RTT_ROOT)

把路径直接加入,模仿1.1.0的写法,注意
BSP_ROOT,
一行和1.1.0不同
= Environment(tools = ['mingw'],
AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,
CXX = rtconfig.CXX, AR = rtconfig.AR, ARFLAGS = '-rc',
LINK = rtconfig.LINK, LINKFLAGS = linkflags,
CPPPATH = [
RTT_ROOT + '/include',
BSP_ROOT,
RTT_ROOT + '/components/finsh',
RTT_ROOT + '/components/rtgui/include',
RTT_ROOT + '/components/rgtui/common',
RTT_ROOT + '/components/rtgui/server',
RTT_ROOT + '/components/rtgui/widgets',
RTT_ROOT + '/components/libdl',
RTT_ROOT + '/components/external/ftk/ftk/src/os/rt-thread',
RTT_ROOT + '/components/external/ftk/ftk/src/demos',
RTT_ROOT + '/components/external/ftk/ftk/apps/common',
RTT_ROOT + '/components/external/ftk/ftk/src',
RTT_ROOT + '/components/dfs',
RTT_ROOT + '/components/dfs/include',
RTT_ROOT + '/components/libc/newlib',
RTT_ROOT + '/components/external/cairo/cairo-1.10.2/src',
RTT_ROOT + '/components/external/cairo/'
])


这样就确定了问题只有导入路劲1个,应该是吧,手里没realboard,mo没试过。
下一步就是解决rtua的问题了

发布
问题