Linux + RT-Thread
1.U-boot、Linux设备树修改
- memory {
- device_type = "memory";
- reg = <0x0 0x30000000>;
- };/*修改CPU0地址空间范围*/
2.Linux内核启动参数,修改设置为SMP,CPU个数为1
bootargs "console=ttyPS0,115200 maxcpus=1 root=/dev/ram rw earlyprintk "
3.编译u-boot、内核
4.修改RT-thread相关文件
//INIT_BOARD_EXPORT(rt_hw_uart_init);
#define HEAP_END (void*)(0x40000000)
- void rt_hw_board_init()
- {
- rt_components_board_init();
- // rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
- }
- 添加线程代码,周期控制测试Led闪烁:
- static void rt_led_thread_entry(void *parameter)
- {
- /* do component initialization */
- unsigned char uc = 1;
- while(1)
- {
- *( (unsigned int *) 0x43c00000 ) = uc;
- uc = ~uc;
- rt_thread_delay(1000);
- }
- /* add your initialization here */
- }
- int rt_application_init()
- {
- rt_thread_t tid;
- tid = rt_thread_create("init", rt_init_thread_entry, RT_NULL, 2048,
- RT_THREAD_PRIORITY_MAX/3, 20);
- if (tid != RT_NULL)
- rt_thread_startup(tid);
- tid = rt_thread_create("led", rt_led_thread_entry, RT_NULL, 2048,
- RT_THREAD_PRIORITY_MAX/3, 20);
- if (tid != RT_NULL)
- rt_thread_startup(tid);
- return 0;
- }
- /* set page table */
- /* no access to the memory below .text */
- /* 128M cached DDR memory */
- rt_hw_mmu_setmtt((rt_uint32_t)&__text_start, 0x40000000-1,
- 0x30000000, RW_CB);
CPU0 终端串口上 Linux启动正常
CPU1 测试LED一直在闪烁
联系客服