rt-thread-2.1.0-dfs(w25q128)

所属分类:操作系统开发
开发工具:C/C++
文件大小:20856KB
下载次数:8
上传日期:2018-06-21 10:32:34
上 传 者搬砖蚂蚁
说明:  基于rt-thread2.10版本,实现了dfs文件系统的移植,使用w25q128芯片作为存储介质
(base on the version of rt-thread2.10, use the spi-flash w25q128 as the flash,finish the reboot of dfs-filesystem)

文件列表:
rt-thread-2.1.0-dfs(w25q128)\.travis.yml (4016, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\AUTHORS (571, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\applications\application.c (4129, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\applications\canapp.c (7340, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\applications\SConscript (338, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\applications\startup.c (2595, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\board.c (6463, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\board.h (1397, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\bxcan.c (52112, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\bxcan.h (1628, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\dm9000a.c (23748, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\dm9000a.h (5016, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\gpio.c (13304, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\gpio.h (609, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\ili_lcd_general.c (21202, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\ili_lcd_general.h (1735, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\led.c (2878, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\led.h (553, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\SConscript (917, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\sdcard.c (105149, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\sdcard.h (15389, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\ssd1289.c (14783, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\ssd1289.h (1146, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\stm32f10x_conf.h (3176, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\stm32f10x_it.c (4453, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\stm32f10x_it.h (1923, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\stm32f1_rtc.c (4078, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\stm32f1_rtc.h (481, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\touch.c (14367, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\touch.h (364, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\usart.c (12721, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\drivers\usart.h (624, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c (16489, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h (83896, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\Libraries\CMSIS\CM3\DeviceSupport\ST\Release_Notes_for_STM32F10x_CMSIS.html (24842, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\Release_Notes.html (26014, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_cl.s (15398, 2018-06-21)
rt-thread-2.1.0-dfs(w25q128)\bsp\stm32f10x\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_hd.s (15145, 2018-06-21)
... ...

说明: 本驱动完成了can控制器硬件抽象 一 CAN Driver 注册 Can driver注册需要填充以下几个数据结构: 1、struct can_configure { rt_uint32_t baud_rate; rt_uint32_t msgboxsz; rt_uint32_t sndboxnumber; rt_uint32_t mode :8; rt_uint32_t privmode :8; rt_uint32_t reserved :16; #ifdef RT_CAN_USING_LED const struct rt_can_led* rcvled; const struct rt_can_led* sndled; const struct rt_can_led* errled; #endif /*RT_CAN_USING_LED*/ rt_uint32_t ticks; #ifdef RT_CAN_USING_HDR rt_uint32_t maxhdr; #endif }; struct can_configure 为can驱动的基本配置信息: baud_rate : enum CANBAUD { CAN1MBaud=0, // 1 MBit/sec CAN800kBaud, // 800 kBit/sec CAN500kBaud, // 500 kBit/sec CAN250kBaud, // 250 kBit/sec CAN125kBaud, // 125 kBit/sec CAN100kBaud, // 100 kBit/sec CAN50kBaud, // 50 kBit/sec CAN20kBaud, // 20 kBit/sec CAN10kBaud // 10 kBit/sec }; 配置Can的波特率。 msgboxsz : Can接收邮箱缓冲数量,本驱动在软件层开辟msgboxsz个接收邮箱。 sndboxnumber : can 发送通道数量,该配置为Can控制器实际的发送通道数量。 mode : #define RT_CAN_MODE_NORMAL 0 正常模式 #define RT_CAN_MODE_LISEN 1 只听模式 #define RT_CAN_MODE_LOOPBACK 2 自发自收模式 #define RT_CAN_MODE_LOOPBACKANLISEN 3 自发自收只听模式 配置Can 的工作状态。 privmode : #define RT_CAN_MODE_PRIV 0x01 处于优先级模式,高优先级的消息优先发送。 #define RT_CAN_MODE_NOPRIV 0x00 配置Can driver的优先级模式。 #ifdef RT_CAN_USING_LED const struct rt_can_led* rcvled; const struct rt_can_led* sndled; const struct rt_can_led* errled; #endif /*RT_CAN_USING_LED*/ 配置can led信息, 当前can驱动的led使用了 pin驱动, 开启RT_CAN_USING_LED时要确保当前系统已实现pin驱动。 rt_uint32_t ticks : 配置Can driver timer周期。 #ifdef RT_CAN_USING_HDR rt_uint32_t maxhdr; #endif 如果使用硬件过滤,则开启RT_CAN_USING_HDR, maxhdr 为Can控制器过滤表的数量。 2、struct rt_can_ops { rt_err_t (*configure)(struct rt_can_device *can, struct can_configure *cfg); rt_err_t (*control)(struct rt_can_device *can, int cmd, void *arg); int (*sendmsg)(struct rt_can_device *can, const void* buf, rt_uint32_t boxno); int (*recvmsg)(struct rt_can_device *can,void* buf, rt_uint32_t boxno); }; struct rt_can_ops 为要实现的特定的can控制器操作。 rt_err_t (*configure)(struct rt_can_device *can, struct can_configure *cfg); configure根据配置信息初始化Can控制器工作模式。 rt_err_t (*control)(struct rt_can_device *can, int cmd, void *arg); control 当前接受以下cmd参数: #define RT_CAN_CMD_SET_FILTER 0x13 #define RT_CAN_CMD_SET_BAUD 0x14 #define RT_CAN_CMD_SET_MODE 0x15 #define RT_CAN_CMD_SET_PRIV 0x16 #define RT_CAN_CMD_GET_STATUS 0x17 #define RT_CAN_CMD_SET_STATUS_IND 0x18 int (*sendmsg)(struct rt_can_device *can, const void* buf, rt_uint32_t boxno); sendmsg向Can控制器发送数,boxno为发送通道号。 int (*recvmsg)(struct rt_can_device *can,void* buf, rt_uint32_t boxno); recvmsg从Can控制器接收数据,boxno为接收通道号。 struct rt_can_device { struct rt_device parent; const struct rt_can_ops *ops; struct can_configure config; struct rt_can_status status; rt_uint32_t timerinitflag; struct rt_timer timer; struct rt_can_status_ind_type status_indicate; #ifdef RT_CAN_USING_HDR struct rt_can_hdr* hdr; #endif void *can_rx; void *can_tx; }; 填充完成后,便可调用rt_hw_can_register完成can驱动的注册。 二、 CAN Driver 的添加: 要添加一个新的Can驱动,至少要完成以下接口。 1、struct rt_can_ops { rt_err_t (*configure)(struct rt_can_device *can, struct can_configure *cfg); rt_err_t (*control)(struct rt_can_device *can, int cmd, void *arg); int (*sendmsg)(struct rt_can_device *can, const void* buf, rt_uint32_t boxno); int (*recvmsg)(struct rt_can_device *can,void* buf, rt_uint32_t boxno); }; 2、 rt_err_t (*control)(struct rt_can_device *can, int cmd, void *arg); 接口的 #define RT_CAN_CMD_SET_FILTER 0x13 #define RT_CAN_CMD_SET_BAUD 0x14 #define RT_CAN_CMD_SET_MODE 0x15 #define RT_CAN_CMD_SET_PRIV 0x16 #define RT_CAN_CMD_GET_STATUS 0x17 #define RT_CAN_CMD_SET_STATUS_IND 0x18 若干命令。 3、can口中断,要完接收,发送结束,以及错误中断。 #define RT_CAN_EVENT_RX_IND 0x01 /* Rx indication */ #define RT_CAN_EVENT_TX_DONE 0x02 /* Tx complete */ #define RT_CAN_EVENT_TX_FAIL 0x03 /* Tx complete */ #define RT_CAN_EVENT_RX_TIMEOUT 0x05 /* Rx timeout */ #define RT_CAN_EVENT_RXOF_IND 0x06 /* Rx overflow */ 中断产生后,调用rt_hw_can_isr(struct rt_can_device *can, int event) 进入相应的操作,其中接收发送中断的event,最低8位为上面的事件,16到24位为通信通道号。 一个作为一个例子,参见bsp/stm32f10x/driver下的bxcan.c 。 三、CAN Driver的使用: 一个使用的例子,参数bsp/stm32f10x/applications下的canapp.c 四、当前Can驱动,没有实现轮模式,采用中断模式,bxcan驱动工作在loopback模式下的时候不能读数据。 五、当前Can驱动,在stm32f105上测试,暂无问题。

近期下载者

相关文件


收藏者