
暂无个人介绍
能力说明:
具备数据库基础知识,了解数据库的分类,具备安装MySQL数据库的能力,掌握MySQL数据类型知识,基本了解常用SQL语句,对阿里云数据库产品有基本认知。
暂时未有相关云产品技术能力~
阿里云技能认证
详细说明1.通过cubemx生成SRAM的初始化,这个应该没啥问题了,出现硬件错误啥的,就查这个哪个参数每设置对就对了2.修改LD链接文件,增加对应存储位置及大小2.1在LD文件中我还加了个如下,方便以后编译时能指定变量到存储器3.然后就是confic的修改,将LD文件中的变量声明,并重新设置aos_heap_set()4.最后一步就是在board.c中的board_init()中初始化外部sram,因为此初始化后才是其他初始化5.mk文件的修改就不说了,confin文件也不说,大家自行研究,相信会用的都会
1.参考fatafs/diskio.c文件中有部分SDMMC_XXX()的实现2.我新建了个文件用于当前实现3.实现中这个函数是重点,注意修改4.要在fatfs_vfs.c中的g_gsid[]中增加SPIFLASH对应的宏定义5.下一步就是dickio.c对应函数中增加对应的调用函数就可以了6.其他的多查网上的FATFFS就行
1.在此说明一下,这是学习记录,其中肯定有很多问题2.通过CubeMX选中USB_Device2.1选择Middleware,注意选中MSC后改一下USB的缓冲大小为4096就是最后一个选项3.将生成的文件夹拷贝到board下的对应板子工程4.然后时这两个函数实现,就是加粗部分(说句实话实现SPI调了很久,在其他地方好好的,到了USB中断就不能用,其中就有SPI需要延时获取SPI写状态,因为USB在中断中跳不出去,HAL_Delay()直接不能用。说到这里插一句SPI使用的是直接读写的方式不是中断或者DMA)int8_t STORAGE_Read_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len){ / USER CODE BEGIN 6 / if (blk_len == 0) { return (USBD_FAIL); } *if(w25q128_read(blk_addrSTORAGE_BLK_SIZ,buf,blk_len*STORAGE_BLK_SIZ) == 0) return (USBD_OK);** return (USBD_FAIL); / USER CODE END 6 /}int8_t STORAGE_Write_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len){ / USER CODE BEGIN 7 / if (blk_len == 0) { return USBD_FAIL; } *if(w25q128_erase_write(blk_addrSTORAGE_BLK_SIZ,buf,blk_len*STORAGE_BLK_SIZ) == 0) return (USBD_OK);** return USBD_FAIL; / USER CODE END 7 /}5.这里写函数一定要注意,SPI写入数据时,当遇到不是地址中不是0xFF数据时,写入是无效的,所以USB写入函数这里一定要带有擦除方式写入,至于怎么擦除,就看各位的SPI实现了6.我添加了个中间文件6.1就封装了usb的初始化和其中断实现7.总结下调试过程当中的坑:先把上面写入和擦除函数里的SPI实现注释掉,一跑肯定就跑起来了(反正我是没遇到跑不起来的情况),此时电脑上面就能检测到U盘插入了,但是格式化是不成功的。然后就是各种SPI读写的对接,真心话,我觉得最大的坑就是说好的有中断嵌套呢,完全就不是那么回事,当然也有可能水平低,没找到正真原因
1.参考spiffs中的vfs的调用,实现类flash实现spi调用W25QXX如至于return hal_spiflash_read((hal_partition_t)SPIFFS_CFG_PARTITION, addr, dst, size);的实现就是SPI W25QXX的细节了(走了好多弯路,这个感觉就是硬件实现了...)2.flash分配中增加2.1把HAL_PARTITION_SPIFFS的参数值定义,主要是HAL_FLASH_SPI这个不同,其他的好理解3.第三步就是修改结构体3.1增加一个附加参数变量4.在初始化spi时,传递spi设备指针5.当然得根据需要修改spiffs中的几个宏定义(其实我觉得真心不必要,可以在spiffs_vfs.c中看到,其实就是初始化的时候调用了,完全可以声明成变量或者修改hal_logic_partition_t结构体让其容纳更多flash参数5.1这个是告诉spiffs使用flash总大小5.2这个是一次擦除大小5.3这个是写数据时的大小(因为spi限制每次写1页256Byte)5.4这个是块大小,我的理解为就是spiffs一次性操作的大小,理解为W25QXX擦除1个扇区4k或者多个扇区32k或者多个扇区64k的东西6.我遇到的最多的问题就是spi操作W25QXXX的函数没写好,导致spiffs初始化老是报错,大家多排查7.然后就是在终端输入aos make menuconfig找到ulog打开输入到文件8.重新编译就能看到效果了...9.ulog中还发现个问题就是不能打开Async,否则调试串口输出的LOGD和LOGI就有问题咯
1.在board/README.md中有需要的各个文件说明2.复制一个已经有的3.0版本的板子进行修改2.1startup.c不用修改3.board文件3.1仅用串口作为说明,其他IO/SPI同样使用(现在就测试这么多)如结构体声明:变量声明:3.1.1结构体是配合board.c中的3.1.2注意这里仅仅完成了stduart_init()的整个流程3.1.3作用:就是将CubeMX中的HAL库的初始化与本系统对接,其中有些宏定义,变量值不一样就通过GPIO_MAPPING结构体转换。3.1.4当然,HAL生成的其实用得不多,我就仅仅用到stm32f4xx_hal_msp.c(其实就是IO端口的配置初始化,以及是否开启中断),其他的其实已经在platform/mcu已经实现,不用自己做3.1.5这样就可以使用inlude/aos/hal/uart.h中的对应函数使用4.这个是CubeMX中生成的void SystemClock_Config(void),直接复制替换就行4.1最终在调用5.这个与CubeMX中的有些不一样6.重定向printf中的输出与输入6.1注意其中第一个变量改为了我串口中的第一个uart_0→PORT_UART_STD=0(这里宏定义0对应的变量一定是标准输入输出的设备);7.k_config文件暂时不作修改8.partition_conf.c就是划分芯片的flash,暂时不修改9.拷贝CubeMX中生成的startup_stm32f407xx.s(这里注意,生成的时候改为makefile目标哟)10.拷贝CubeMX中生成的stm32f4xx_hal_conf.h(其实就是个根据使用引用对应的头文件及相关宏定义,方便与HAL库的裁剪)11.修改aos.mk(最好复制stm32f401的作修改)11.1 NAME:=改为文件夹名字$(NAME)_SOURCES表示需要编译的源文件(.c)文件.s是启动汇编文件.ld是链接文件(前面忘了说,这个也是CubeMX会生成的GLOBAL_INCLUDES 头文件包含路径下面这个就是自己尝试了,好像是留给后面的定义使用的12.文件夹下的Config.in,一样的照着抄就行(注意几个地方“-”要改为“_”)13.一定要修改board/Config.in(这个玩意就是板级下的最高层,只有在这里增加了你的选项,配置才能生成)13.1感觉就是一阵复制粘贴,然后把需要的地方改为自己的名字14这样就可以选择helloworld,再选中自己的开发板了
2020年03月
我做了下基础移植,现在估计没有现成的资料