RT-Thread

[email protected]:~$ python -V
Python 2.7.10
[email protected]:~$ sudo apt-get install scons

rt-thread-master/bsp/x86/rtconfig.h

/* RT-Thread config file */
#ifndef __RTTHREAD_CFG_H__
#define __RTTHREAD_CFG_H__

/* RT_NAME_MAX*/
#define RT_NAME_MAX        8

/* RT_ALIGN_SIZE*/
#define RT_ALIGN_SIZE    8

/* PRIORITY_MAX */
#define RT_THREAD_PRIORITY_MAX    32

/* Tick per Second */
#define RT_TICK_PER_SECOND        1000

/* SECTION: RT_DEBUG */
/* Thread Debug */
#define RT_DEBUG
#define RT_THREAD_DEBUG

#define RT_USING_OVERFLOW_CHECK

/* Using Hook */
#define RT_USING_HOOK

/* Using Software Timer */
/* #define RT_USING_TIMER_SOFT */
#define RT_TIMER_THREAD_PRIO        4
#define RT_TIMER_THREAD_STACK_SIZE    512
#define RT_TIMER_TICK_PER_SECOND    10

/* SECTION: IPC */
/* Using Semaphore*/
#define RT_USING_SEMAPHORE

/* Using Mutex */
#define RT_USING_MUTEX

/* Using Event */
#define RT_USING_EVENT

/* Using MailBox */
#define RT_USING_MAILBOX

/* Using Message Queue */
#define RT_USING_MESSAGEQUEUE

/* SECTION: Memory Management */
/* Using Memory Pool Management*/
#define RT_USING_MEMPOOL

/* Using Dynamic Heap Management */
#define RT_USING_HEAP

/* Using Small MM */
#define RT_USING_SMALL_MEM

/* SECTION: Device System */
/* Using Device System */
#define RT_USING_DEVICE

/* SECTION: Console options */
#define RT_USING_CONSOLE
/* the buffer size of console*/
#define RT_CONSOLEBUF_SIZE    128

#define IDLE_THREAD_STACK_SIZE        1024  /* idle stack 1K */

/* SECTION: finsh, a C-Express shell */
#define RT_USING_FINSH
/* Using symbol table */
#define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION

#endif

rt-thread-master/bsp/x86/rtconfig.py

import os

# toolchains options
ARCH=‘ia32‘
CPU=‘‘
CROSS_TOOL=‘gcc‘

if os.getenv(‘RTT_CC‘):
    CROSS_TOOL = os.getenv(‘RTT_CC‘)

# cross_tool provides the cross compiler
# EXEC_PATH is the compiler execute path, for example, CodeSourcery,

if  CROSS_TOOL == ‘gcc‘:
    PLATFORM     = ‘gcc‘
    EXEC_PATH     = ‘‘

elif CROSS_TOOL == ‘keil‘:
    print ‘================ERROR============================‘
    print ‘Not support keil yet!‘
    print ‘=================================================‘
    exit(0)
elif CROSS_TOOL == ‘iar‘:
    print ‘================ERROR============================‘
    print ‘Not support iar yet!‘
    print ‘=================================================‘
    exit(0)

if os.getenv(‘RTT_EXEC_PATH‘):
    EXEC_PATH = os.getenv(‘RTT_EXEC_PATH‘)

BUILD = ‘debug‘

if PLATFORM == ‘gcc‘:
    # toolchains
    PREFIX = ‘‘
    CC = PREFIX + ‘gcc‘
    AS = PREFIX + ‘gcc‘
    AR = PREFIX + ‘ar‘
    LINK = PREFIX + ‘gcc‘
    TARGET_EXT = ‘elf‘
    SIZE = PREFIX + ‘size‘
    OBJDUMP = PREFIX + ‘objdump‘
    OBJCPY = PREFIX + ‘objcopy‘

    DEVICE = ‘ -mtune=generic‘
    CFLAGS = DEVICE + ‘ -Wall -fno-stack-protector‘
    AFLAGS = ‘ -c‘ + DEVICE + ‘ -x assembler-with-cpp‘
    LFLAGS = DEVICE + ‘ -Wl,--gc-sections,-Map=rtthread-ia32.map,-cref,-u,_start -T x86_ram.lds -nostdlib‘

    CPATH = ‘‘
    LPATH = ‘‘

    if BUILD == ‘debug‘:
        CFLAGS += ‘ -O0 -gdwarf-2‘
        AFLAGS += ‘ -gdwarf-2‘
    else:
        CFLAGS += ‘ -O2‘

    POST_ACTION = OBJCPY + ‘ -O binary $TARGET rtthread.bin\n‘ + SIZE + ‘ $TARGET \n‘
[email protected]:~/rt-thread-master/bsp/x86$ scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build/bsp
CC build/bsp/applications/application.o
CC build/bsp/applications/startup.o
CC build/bsp/drivers/board.o
CC build/bsp/drivers/console.o
CC build/bsp/drivers/keyboard.o
CC build/bsp/drivers/serial.o
CC build/kernel/components/finsh/cmd.o
CC build/kernel/components/finsh/finsh_compiler.o
CC build/kernel/components/finsh/finsh_error.o
CC build/kernel/components/finsh/finsh_heap.o
CC build/kernel/components/finsh/finsh_init.o
CC build/kernel/components/finsh/finsh_node.o
CC build/kernel/components/finsh/finsh_ops.o
CC build/kernel/components/finsh/finsh_parser.o
CC build/kernel/components/finsh/finsh_token.o
CC build/kernel/components/finsh/finsh_var.o
CC build/kernel/components/finsh/finsh_vm.o
CC build/kernel/components/finsh/shell.o
CC build/kernel/components/finsh/symbol.o
CC build/kernel/components/libc/minilibc/ctype.o
CC build/kernel/components/libc/minilibc/math.o
CC build/kernel/components/libc/minilibc/qsort.o
CC build/kernel/components/libc/minilibc/rand.o
CC build/kernel/components/libc/minilibc/stdlib.o
CC build/kernel/components/libc/minilibc/string.o
CC build/kernel/components/libc/minilibc/time.o
CC build/kernel/libcpu/ia32/__udivsi3.o
CC build/kernel/libcpu/ia32/__umodsi3.o
CC build/kernel/libcpu/ia32/backtrace.o
CC build/kernel/libcpu/ia32/interrupt.o
CC build/kernel/libcpu/ia32/showmem.o
CC build/kernel/libcpu/ia32/stack.o
CC build/kernel/libcpu/ia32/trap.o
In file included from drivers/include/bsp.h:17:0,
                 from /home/ubuntu/rt-thread-master/libcpu/ia32/trap.c:17:
/home/ubuntu/rt-thread-master/libcpu/ia32/trap.c: In function ‘rt_hw_idt_init‘:
/home/ubuntu/rt-thread-master/libcpu/ia32/trap.c:49:29: warning: taking address of expression of type ‘void‘
   SETGATE(idt[i], 0, GD_KT, &Xdefault, 0);
                             ^
drivers/include/i386.h:69:38: note: in definition of macro ‘SETGATE‘
  (gate).gd_off_15_0 = (rt_uint32_t) (off) & 0xffff;                                        ^
/home/ubuntu/rt-thread-master/libcpu/ia32/trap.c:49:29: warning: taking address of expression of type ‘void‘
   SETGATE(idt[i], 0, GD_KT, &Xdefault, 0);
                             ^
drivers/include/i386.h:77:39: note: in definition of macro ‘SETGATE‘
  (gate).gd_off_31_16 = (rt_uint32_t) (off) >> 16;                                         ^
/home/ubuntu/rt-thread-master/libcpu/ia32/trap.c: In function ‘rt_hw_trap_irq‘:
/home/ubuntu/rt-thread-master/libcpu/ia32/trap.c:95:4: warning: implicit declaration of function ‘rt_hw_interrupt_handle‘ [-Wimplicit-function-declaration]
    rt_hw_interrupt_handle(T_DEFAULT);
    ^
CC build/kernel/src/clock.o
CC build/kernel/src/device.o
CC build/kernel/src/idle.o
CC build/kernel/src/ipc.o
CC build/kernel/src/irq.o
CC build/kernel/src/kservice.o
CC build/kernel/src/mem.o
CC build/kernel/src/mempool.o
CC build/kernel/src/object.o
CC build/kernel/src/scheduler.o
CC build/kernel/src/thread.o
CC build/kernel/src/timer.o
LINK rtthread.elf
objcopy -O binary rtthread.elf rtthread.bin
size rtthread.elf
   text       data        bss        dec        hex    filename
  73773       3484       9864      87121      15451    rtthread.elf
scons: done building targets.
[email protected]:~/rt-thread-master/bsp/x86$ 
时间: 2024-08-21 18:01:57

RT-Thread的相关文章

RT Thread学习历程(1):串口乱码问题

因为学习实时系统,最近接触到RT Thread. 把RT Thread官网上的示例代码烧录到STM32的板子上之后,在串口软件上接收到的全是乱码,一开始以为是串口软件的问题,换了2个软件之后情况都一样,最后发现是晶振的问题,我用的是STM32F407VGT6,晶振要设为8MHz,代码相应的设置晶振的部分也要修改.

STM32 + RT Thread OS 串口通讯

1.   创建项目 a)   禁用Finsh和console b)   默认情况下,项目文件包含了finsh,它使用COM1来通讯,另外,console输出(rt_kprintf)也使用了COM1.因此,在运行scons命令生成项目文件之前,修改rtconfig.h,禁用这两项.(下图L65, L70) c)   生成项目文件 运行scons --target=mdk4 –s 打开生成的项目文件,可以看到,文件组finsh已经不再被包含进来了. d)   创建echo.c 新建一个C文件echo

RT thread 设备驱动之串口设备

本文以stm32f4xx平台介绍串口驱动,主要目的是: 1.RTT中如何编写中断处理程序 2.如何编写RTT设备驱动接口代码 3.了解串行设备的常见处理机制 所涉及的主要源码文件有:usart.c,usart.h,serial.c,serial.h 一.RTT的设备驱动程序概述 编写uart的驱动程序,首先需要了解RTT的设备框架,这里以usart的驱动来具体分析RTT的IO设备管理.注:参考<RTT实时操作系统编程指南> I/O设备管理一章. 我们可以将USART的硬件驱动分成两个部分,如下

LwIP学习笔记——STM32 ENC28J60移植与入门

0.前言 去年(2013年)的整理了LwIP相关代码,并在STM32上"裸奔"成功.一直没有时间深入整理,在这里借博文整理总结.LwIP的移植过程细节很多,博文也不可能一一详解个别部分只能点到为止. [本文要点] [1]不带操作系统的LwIP移植,LwIP版本为1.4.1. [2]MCU为STM32F103VE,网卡为ENC28J60. [3]移植过程重点描述ethernetif.c和LwIP宏配置等. [4]一个简单的TCP echo例子. [5]力求简单,没有DHCP功能,甚至没有

多线程的两种实现方式

java中多线程可以采用两种方式实现,分别是继承Thread类重写run方法和实现Runnable接口重写run方法. 继承Thread类重写run方法举例如下: /* 需求:在主线程之外继承Thread类创建两独立线程,分别打印1至50. */ class ThreadTest extends Thread{ public void run(){ for(int i = 1; i <= 50; i++) System.out.println(Thread.currentThread().get

MQTT学习笔记——Yeelink MQTT服务 使用mqtt.js和paho-mqtt

0 前言 2014年8月yeelink推出基于MQTT协议的开关类型设备控制API,相比于基于HTTP RESTful的轮训方式,通过订阅相关主题消息,可以远程控制类应用实时性更好.本文使用两种方式实现开关类型设备的远程控制,一种是基于nodeJS的MQTT.js扩展库,另一种是基于python的paho-mqtt扩展库. [相关博文--MQTT] [MQTT学习笔记--MQTT协议体验 Mosquitto安装和使用] [MQTT学习笔记--树莓派MQTT客户端 使用Mosquitto和paho

PHP再学习5——RESTFul框架 远程控制LED

0.前言 去年(2013年)2月第一次接触yeelink平台,当时该平台已经运行了一些时间也吸引了不少极客.试想自己也将投身IoT(物联网)行业,就花了些时间研究了它.陆陆续续使用和研究了一年,大致围绕两个问题展开——1.yeelink平台如何使用,2.如何构造一个功能简单些的yeelink平台.    [PHP学习笔记——索引博文] 本文将讨论如何构造一个简单restful架构平台(该平台有点像yeelink,不过功能比yeelink少的多),并结合树莓派实现LED的远程控制(网络控制).构建

RT-Thread 学习笔记(九)---开启基于SD卡中的 Elm FatFS 文件系统

软件环境:Win7,Keil MDK 4.72a, IAR EWARM 7.2, GCC 4.2,Python 2.7 ,SCons 2.3.2 硬件环境:Armfly STM32F103ZE-EK v3.0开发板 参考文章:RT-Thread编程指南 由于SD卡可插拔的便捷性,使得其在嵌入式中的应用中广泛使用. [1]修改底层驱动接口 (1)打开Armfly STM32F103ZE-EK v3.0开发板找到SD卡硬件接口部分,如下图: 从硬件接口可以看到,SD是SDIO的接口类型,amobbs

RT-Thread 学习笔记(十三)--- 开启基于RTGUI的LCD显示功能(3)&lt;触屏屏驱动移植和测试&gt;

软件环境:Win7,Keil MDK 4.72a, IAR EWARM 7.2, GCC 4.2,Python 2.7 ,SCons 2.3.2 硬件环境:Armfly STM32F103ZE-EK v3.0开发板 参考文章:RT-Thread编程指南 RT-Thread_1.2.0+lwip+rtgui0.8.0 移植心得 RT-Thread RTOS组件:RTGUI教程 Hello World 前面基本解决了显示驱动问题,接下来将要解决触摸屏的驱动问题. [1]加入触屏屏的驱动文件 (1)重

优先级反转实验,使用信号量实现【RT-Thread学习笔记 5】

RTOS中很经典的问题.就是在使用共享资源的时候,优先级低的进程在优先级高的进程之前执行的问题.这里模拟这种情况. 下面的实验模拟了优先级反转的情况: 先定义三个线程: //优先级反转实验 rt_sem_t sem; rt_uint32_t t1_count = 0,t2_count = 0,worker_count = 0; rt_thread_t t1,t2,worker ; void pri1_entry(void *parameter) { rt_err_t result; while(