OXape
OXape
This guy hasn't written anything yet

注册于 8 years ago

回答
0
文章
0
关注者
0

执行保存上下文的工作不在这里,这里负责处理调度的逻辑,就是该去调度那个线程。
保存线程上下文:
我只说我熟悉的cortex-M3是在PendSV_Handler中,这个其实是个软中断。另外想知道调度原理的,建议先找个熟悉的CPU去看下CPU指南,不是那种教你怎么使用功能的而是讲背后原理的。cortex-M3就看《CM3权威指南》。
这里会告诉你发生中断了CPU会保存部分寄存器,然后你在保存一部分。
我看没人回复,来说下,还望大神来亲自指点.

是打开的在lwipopts.h中

#define LWIP_SO_RCVTIMEO            1


我比较奇怪的是select之后去recvfrom却没有数据。

setsockopt( udp_sock, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof( struct timeval ) )

不知道我这样设置对不对,不好我测试了
timeout.tv_sec = 0;
timeout.tv_usec = 0;

还是阻塞的。
只要timeout.tv_sec>0是立即返回没有等待。
我看了recvfrom里有一个MSG_DONTWAIT。暂时先用这个flag吧。还是希望有个大神来指教下。

找到问题:
在server线程select的时候有一个udp socket用来接受广播数据。
当select之后用FD_ISSET判断是udp的数据才去调用recvfrom。不过现在的结果是卡在recvfrom上了。不知道这是为什么。
我先给udp socket加一个才接受超时。

在发帖前我在论坛搜了下,没收到。如果不是线程安全那我在想办法。

如果覆盖了旧的数据就应该修改read_index.不然再次读数据时就会造成错误。

TIM3肯定是没配置好的(最小系统的话),时钟也应该是72M,楼主可以去找启动代码。

RTT版本是1.1.0,应该不是ART上的,是魔笛开发板的例程。

error detected and set to -2/0 (cmd = 8),0x00000004
error detected and set to -2/0 (cmd = 5),0x00000004
error detected and set to -2/0 (cmd = 8),0x00000004
不知道这些代表会引起什么,SD是可以读的,就是写时会挂机。卡在一个信号量上。

已经在用libroxml了,自己改了下,不过总感觉解析xml不靠谱啊。

hard_fault应该是我的驱动的原因。

我mount时都是hard_fault


#ifdef RT_USING_DFS
#ifdef RT_USING_SPI
{
extern void rt_hw_spi1_init(void);
rt_hw_spi1_init();
}
w25qxx_init("flash0", "spi10");
rt_device_init_all();
dfs_init();
#endif
#ifdef RT_USING_DFS_ELMFAT
elm_init();
if (dfs_mount("flash0", "/", "elm", 0, 0) != 0)
{
rt_kprintf("flash0 mount to / failed!, fatmat and try again!
");
/* fatmat filesystem. */
dfs_mkfs("elm", "flash0");
/* re-try mount. */
if (dfs_mount("flash0", "/", "elm", 0, 0) != 0)
{
rt_kprintf("flash0 mount to / failed!
");
}
}

#endif

我的顺序应该是对的吧?

在早期,mkfs时,仅从mount table里面find,而不是从系统里面find。
需要先mount(此时mount并不做文件系统的检查),然后再mkfs。

现已修改为:不管是否mount,都可以mkfs,建议先mkfs再mount,或已经mount的先unmount再mkfs再mount回。
同时,mount时会做格式,如果没有系统,或已完全损坏,则mount不成功。
相关修改见:elm fatfs support mkfs with no need to run dfs_mount elm first; and can mount/umount/mkfs without reset any more

请问最早的修改过的,是哪个版本?

后来我就把那些一个一个发的改了,改成拼到一起发。能用了。DMA比如多次连续发少量数据是不是会出错啊。感觉DMA应该适合多点数据。

回到
顶部

发布
问题

投诉
建议