Open gnitnaw opened 7 years ago
Can it work now?
No. I got lots of like this : MEM: fpage APB2_3DEV [b:40015400, sz:210] MEM: fpage APB2_3DEV [b:40015800, sz:210] MEM: fpage APB2_4DEV [b:40016800, sz:211] MEM: fpage APB2_4DEV [b:40017000, sz:28] MEM: fpage APB2_4DEV [b:40017100, sz:28] MEM: fpage APB2_4DEV [b:40017200, sz:29] MEM: fpage AHB1_1DEV [b:40020000, sz:210] MEM: fpage AHB1_1DEV [b:40020400, sz:210] MEM: fpage AHB1_1DEV [b:40020800, sz:211] MEM: fpage AHB1_1DEV [b:40021000, sz:212] MEM: fpage AHB1_1DEV [b:40022000, sz:210] MEM: fpage AHB1_1DEV [b:40022400, sz:210] MEM: fpage AHB1_1DEV [b:40022800, sz:211] MEM: fpage AHB1_1DEV [b:40023000, sz:210] MEM: fpage AHB1_1DEV [b:40023400, sz:210] MEM: fpage AHB1_1DEV [b:40023800, sz:210] MEM: fpage AHB1_2DEV [b:40028000, sz:215] MEM: fpage CR_PLLSAION_BB [b:42470000, sz:210] MEM: fpage CR_PLLSAION_BB [b:42470400, sz:210] MEM: fpage CR_PLLSAION_BB [b:42470800, sz:210] MEM: fpage AHB3DEV [b:a0000000, sz:212] MEM: fpage LCD_FRAME_BUFFER_1 [b:d0000000, sz:217] MEM: fpage LCD_FRAME_BUFFER_1 [b:d0020000, sz:217] MEM: fpage LCD_FRAME_BUFFER_1 [b:d0040000, sz:218] MEM: fpage LCD_FRAME_BUFFER_1 [b:d0080000, sz:217] MEM: fpage LCD_FRAME_BUFFER_2 [b:d00a0000, sz:217] MEM: fpage LCD_FRAME_BUFFER_2 [b:d00c0000, sz:218] MEM: fpage LCD_FRAME_BUFFER_2 [b:d0100000, sz:218] -------TOP------ Init sampling...
Stack dump: 20000388 00000082 2000e6f4 40023810 00000003 00000004 08001395 080051cc 00000082 40023810 00408002 20013e80 200123ba 10000835 f0000001 00000003 20012f2c 00000003 080013af fffffffd 00000001 08005854 00000000 0800439d 40020024 0800401b 080043a4 61000000 0800439d 08004321 00000000 0800430d 0000eb58 0800436d e000ed24 0800414d 00000000 ffffffff 00000000
If the code works well, I should wee the LD3 toggle... But it doesn't work...
The following references can help you.
Thanks.
BTW, if you want to know more about microkernel, you can search the following links.
Thanks. Finally I found the problem: I have to put the address where I have to touch in DECLARE_FPAGE.
One more question: Why it cannot run as well as lcd_test run? I have to remove led(what I have added) or lcd_test(included in the repo.) from build.mk . Is it normal?
@gnitnaw LCD_test have a while (1)
loop at the end (line 35).
At this moment, F9 can't schedule user thread, that means if someone makes an infinity loop (as LCD_test), you will get the result: hang it.
So, it is normal, but not a feature, is a bug which waits for the fix.
When will you fix this bug?
@gnitnaw That's a big problem, ha. It needs to change the scheduler inside the user space, I have done some experiment in #129, but the result is not good as we want.
Maybe you can take this job, we want a pluggable scheduler for user space, and resolve this problem.
I'm happy to help you but until now I don't understand the way you do the context-switch... (I tried to get more inform. form NCKU wiki, but still not so clear...)
The problem is at context-switch or scheduling?
Another question is : it is preempt-able or not. If it is for IOT use, maybe the answer is no?
Hi,
If I understand well, the scheduler is done by kernel/sched.c So I need to implement tcb_t *schedule_select() ?
Do you mind to show your implement for sched_rr and tell me where the problem is. I can try to improve it.
UTCB is better.
If your final goal is that F9 can provide GPIO and I2C driver, I think you need to implement the following user apps.
Reference:
I'm creating an app. for stm32f429 discovery. Here is my code: https://github.com/gnitnaw/f9-kernel/blob/master/user/apps/led/main.c
I would like to ask how to write the part "DECLARE_USER" and "DECLARE_FPAGE".
Another question: I have one stm32f072b and one stm32l476 board. Are the files in platform/stm32-common compatible with these two boards? Thanks.