完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
您好,我必须如何配置和谐配置器来在HTTP网络服务器的外部闪存(SST25)中存储网页?我用PIC32 MZ谢谢
以上来自于百度翻译 以下为原文 Hello, How must I configure HARMony configurator to store web pages in an external flash (SST25) for HTTP NET Server ? I use PIC32MZ Thanks |
|
相关推荐
18个回答
|
|
在你走得更远之前,肯定会指出SST25芯片被弃用,不推荐用于新的设计。您会发现,SST26芯片更容易使用,而且更快,因为它们使用页面写入,而不是自动增量地址(Word)编写。此外,这是SPI还是SQI?记住,在PIC32 MZ中有一个闪光灯的量规。为什么不使用内部闪存作为存储介质呢?
以上来自于百度翻译 以下为原文 Before you go too much further, it will most assuredly be pointed out that SST25 chips are deprecated and not recommended for new designs. You'll find that the SST26 chips are MUCH easier to work with, and faster, since they use page writing as opposed to the auto-increment address (word) writing. Also, is this SPI or SQI? Bear in mind that you have a metric crapton of flash in a PIC32MZ. Why not just use internal flash as your storage medium? |
|
|
|
我想使用SST26而不是SPI模式。SST25是由SPI驱动程序管理的,但不是SST26的:这不是问题,因为它很容易适应SPI驱动程序源代码来管理SST26(我之前购买SST25测试源代码来尝试实现SST26)。2,不可能使用SPI和以太网外设(SPI外围使用相同的PIN以太网外围)。我想使用外部闪存,因为我需要所有内存的内部闪存来存储我的程序。我在哪里可以找到一个使用和声与SST25的例子?我必须使用的卷名是什么?
以上来自于百度翻译 以下为原文 I want use SST26 but in SPI mode (not SQI). SST25 is managed by SPI driver but but not for SST26 : It isn't a problem because it is easy to adapt SPI driver source code to manage SST26 (I bought SST25 to test source code before to try to implement SST26). I can't use SQI mode because with 64-pin PIC32, it is impossible to use SPI and Ethernet peripherials (SPI peripherial use same pins that Ethernet peripherial). I want to use external flash because I need all memory of internal flash to store my program. Where can I find a exemple to use Harmony with SST25 ? What is volume name that I must use ? |
|
|
|
现在,尝试使用内部闪存来启动和运行Web服务器。这是真的,经过测试。因此,在这些论坛上的人们将能够帮助你获得和运行。最好是系统化的:如果你知道你的Web服务器在内部运行,那么任何试图将它从Flash中运行出来的东西都可能是因为你的SST25、SPI或文件系统服务设置。在你的SST25驱动程序下,你需要将它注册到文件系统中;有一个选项A。可以在2.05完成这个任务。文件系统需要为MPFS安装,MPFS是Microchip用于这些网页的文件系统。您还需要在代码中的某个地方安装一个调用,以确保文件系统被正确安装。这将给代码添加一些阻塞,尽管我不确定有多少。MPFS驱动程序与SST25驱动程序的任务函数处于一个循环中。您可能需要让您的SPI任务驱动程序在中断模式下运行。
以上来自于百度翻译 以下为原文 For now, try and get the web server up and running with internal flash. It's tried, true, and tested. Therefore, the people on these fora will be able to help you get that up and running. It's best to be systematic: if you know that your web server runs internally then anything that screws up attempting to run it out of flash is probably due to your SST25, SPI, or file system service setup. Under your SST25 driver, you'll need to register it with the file system; there is an option available to do this in 2.05. The file system will need to be setup for MPFS, which is the filesystem that Microchip uses for these webpages. You will also need to include a call to mount somewhere in your code to ensure that the file system is mounted properly. This is going to add some blocking to your code, though I'm not sure how much. The MPFS driver sits in a loop with the tasks function for the SST25 driver. You may need to make your SPI tasks driver run in interrupt mode for this to work. |
|
|
|
我的代码是用内部闪存操作的,而不是外部闪存。在App.c中,我做的是:在SPI驱动程序中传递Flash ID检查。当我尝试打开网页时,HTTP连接被重新设置DHCP并发现操作。
以上来自于百度翻译 以下为原文 My code operate with internal flash but not with external flash. In app.c, I do : #define SYS_FS_DRIVE "SST25" #define SYS_FS_SST25_VOL "/dev/mtda1" case APP_MOUNT_DISK: if(SYS_FS_Mount(SYS_FS_SST25_VOL, LOCAL_WEBSITE_PATH_FS, MPFS2, 0, NULL) == 0) { SYS_CONSOLE_PRINT("SYS_Initialize: The %s File System is mountedrn", SYS_FS_MPFS_STRING); appData.state = APP_TCPIP_WAIT_INIT; } break; ... Flash ID check is passed in SPI driver. When I try to open a webpage, HTTP connection is reseted DHCP and discover operate. |
|
|
|
|
|
|
|
你使用DMA吗?如果这样,MPFS可能需要一些修改。
以上来自于百度翻译 以下为原文 Are you using DMA? If so mpfs may require some modification. |
|
|
|
HTTP://www. MyCHIP.COM/FUMUS/M102257.9ASPX,我不确定它会为你的司机,只是知道它花了一些小提琴的SQI。
以上来自于百度翻译 以下为原文 http://www.microchip.com/forums/m1029579.aspx I'm not sure what it will take for your driver, just know it took some fiddling for sqi. |
|
|
|
我不在SPI上使用任何东西。我不使用DMA。@弗里森:在MPFS.C上有相同的问题,用于SPI闪存(我在循环中固定,现在,和声初始化操作……现在我必须修改HTTP网络服务器来上传MPFS文件:MPFSUPPLAD页面不运行。只有当我在SPI外设上使用DMA时,SysSeDeViNoDATAcACHeMealIdAID()才有用吗?
以上来自于百度翻译 以下为原文 I don't use anything else on SPI. I don't use DMA. @friesen : there is same problem on mpfs.c for SPI flash (I fixed while loop and now, Harmony initialization operate... now I must modify HTTP Net server to upload MPFS file : mpfsupload page doesn't operate). SYS_DEVCON_DataCacheInvalidate() is usefull only if I use DMA on SPI peripheral ? |
|
|
|
在SPI模式下管理SST26的最好方法是升级SST25SPI驱动程序或SST26SQI驱动程序?
以上来自于百度翻译 以下为原文 The best way to manage SST26 in SPI mode is to upgrade SST25 SPI driver or SST26 SQI driver ? |
|
|
|
我不确定你在问什么。但是,我会说SST26SQI驱动程序并不是没有什么头痛的。我认为您可以在SPI模式下工作,同时在SQI驱动程序中使用一些模式位,但没有记录。
以上来自于百度翻译 以下为原文 I'm not sure what you are asking. However, I will say that the SST26 SQI driver isn't without some headache. I think you could get it to work in SPI mode with some fiddling with the mode bits in the sqi driver, but its not documented. |
|
|
|
我将修改SST25SPI驱动程序以集成SST26:现在我可以在SST25(32 MB)中上传MPFS文件:“和声2.05更新……Syth.CONFIG.HAPP.C & Gt;AppHytasks-()DrvysST25Load .HDRVYSST25.CMPFS.C-GT;MPFSDSKRead())MPFS.C-GT;MPFSUN()HTTPYNET.C-&GTCPIp;我不集成FRESEN高速缓存管理功能,它运行。
以上来自于百度翻译 以下为原文 I will modify SST25 SPI driver to integrate SST26 : it will be easier. Now I can upload MPFS file in SST25 (32MB) and display web pages :) Harmony 2.05 update... system_config.h #define USE_FS_SST25 #define SYS_FS_DRIVE "SST25" #define SYS_FS_SST25_VOL "/dev/mtda1" app.c -> APP_Tasks() switch(appData.state) { case APP_MOUNT_DISK: #if defined(USE_FS_SST25) if(SYS_FS_Mount(SYS_FS_SST25_VOL, LOCAL_WEBSITE_PATH_FS, MPFS2, 0, NULL) == 0) #elif defined(SYS_FS_SD_VOL) if(SYS_FS_Mount(SYS_FS_SD_VOL, LOCAL_WEBSITE_PATH_FS, MPFS2, 0, NULL) == 0) #elif defined(SYS_FS_NVM_VOL) if(SYS_FS_Mount(SYS_FS_NVM_VOL, LOCAL_WEBSITE_PATH_FS, MPFS2, 0, NULL) == 0) #endif { appData.state = APP_TCPIP_WAIT_INIT; } break drv_sst25_local.h #define DRV_SST25_NUM_DEVICE_SUPPORTED (7) drv_sst25.c const uint32_t gSstFlashIdSizeTable [DRV_SST25_NUM_DEVICE_SUPPORTED][2] = { {0x49, 0x20000}, /* SST25VF010A - 1 MBit */ {0x8C, 0x40000}, /* SST25VF020B - 2 MBit */ {0x8D, 0x80000}, /* SST25VF040B - 4 MBit */ {0x8E, 0x100000}, /* SST25VF080B - 8 MBit */ {0x41, 0x200000}, /* SST25VF016B - 16 MBit */ {0x4A, 0x400000}, /* SST25VF032B - 32 MBit */ {0x4B, 0x800000} /* SST25VF064C - 64 MBit */ }; mpfs.c -> MPFSDiskRead() do { SYS_FS_MEDIA_MANAGER_TransferTask (diskNum); commandStatus = SYS_FS_MEDIA_MANAGER_CommandStatusGet(diskNum, commandHandle); } while (commandStatus != SYS_FS_MEDIA_COMMAND_COMPLETED); mpfs.c -> MPFS_Mount() if (memcmp((void*)&gSysMpfsFileRecord, (const void*)"MPFSx02x01", 6) != 0) { diskNo = 0; } else { if (MPFSGetArray(diskNo, 6, 2, (uint8_t*)&gSysMpfsObj.numFiles) == false) { return MPFS_DISK_ERR; } } http_net.c -> TCPIP_HTTP_NET_FSUpload() #ifdef USE_FS_SST25 if(SYS_FS_Mount(SYS_FS_SST25_VOL, LOCAL_WEBSITE_PATH_FS, MPFS2, 0, NULL) != SYS_FS_RES_FAILURE) #else if(SYS_FS_Mount(SYS_FS_NVM_VOL, LOCAL_WEBSITE_PATH_FS, MPFS2, 0, NULL) != SYS_FS_RES_FAILURE) #endif I don't integrate friesen cache management functions and it operates. |
|
|
|
你好,我做了一个调试函数来查看SST25Flash中的数据。这个函数在AppHytasks-()中被调用:这个代码不运行:PrTrF错误消息总是显示(PrtTf([Err] Debug)SysSyfsMyaAuxMauleSerixTope%PRn,SysfSimaTyAuthRoad;)当我注释我的代码代码时,我可以显示网页,但是当我启用我的函数时,我不能播放网页。问题是什么?谢谢
以上来自于百度翻译 以下为原文 Hello, I made a debug function to see data in SST25 Flash. This function is called in APP_Tasks() : void DEBUG_SYS_FS_MEDIA_MANAGER_TASK(void){ typedef enum { DEBUG_SYS_FS_MEDIA_MANAGER_SM__INIT = 0, DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_CMD, DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_STATUS, DEBUG_SYS_FS_MEDIA_MANAGER_SM__END } DEBUG_SYS_FS_MEDIA_MANAGER_SM; static DEBUG_SYS_FS_MEDIA_MANAGER_SM sm = DEBUG_SYS_FS_MEDIA_MANAGER_SM__INIT; static SYS_FS_MEDIA_BLOCK_COMMAND_HANDLE sysFsMedia_handle; static uint8_t data[4096]; static uint32_t sector_num = 0; switch(sm){ default: case DEBUG_SYS_FS_MEDIA_MANAGER_SM__INIT : sm = DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_CMD; break; case DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_CMD: { sysFsMedia_handle = SYS_FS_MEDIA_MANAGER_SectorRead(0, data, sector_num, 1); if(sysFsMedia_handle == SYS_FS_MEDIA_BLOCK_COMMAND_HANDLE_INVALID){ printf("[ERR] DEBUG_SYS_FS_MEDIA_MANAGER_TASK %prn", sysFsMedia_handle); return; } sm = DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_CMD; break; } case DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_STATUS: { SYS_FS_MEDIA_COMMAND_STATUS status = SYS_FS_MEDIA_MANAGER_CommandStatusGet(0, sysFsMedia_handle); if(status != SYS_FS_MEDIA_COMMAND_COMPLETED){ return; } int i,j; for(j=0; j<16; j++){ for(i=0; i<16; i++){ printf("%02X ", data[(j*16)+i]); } printf(" "); for(i=0; i<16; i++){ printf("%c", data[(j*16)+i]); } printf("rn"); } sm = DEBUG_SYS_FS_MEDIA_MANAGER_SM__END; break; } case DEBUG_SYS_FS_MEDIA_MANAGER_SM__END: break; } } This code doesn't operate : printf error message is displayed always (printf("[ERR] DEBUG_SYS_FS_MEDIA_MANAGER_TASK %prn", sysFsMedia_handle);) When I comment my code code I can display web pages but when I enable my function, I can't dusplay web pages. What is the problem ? Thanks |
|
|
|
我不太确定,但那里确实很重。如果你想让它工作,把你的单词数降到最小和波特率到最大。
以上来自于百度翻译 以下为原文 I'm not sure right off, but that is real heavy right there. If you want it to maybe work, lower your word count to minimum and baud rate to maximum. |
|
|
|
您好,我想,这不是问题,因为程序块在Debug GysSyfsMyaAuMauleSeriSmithRead状态下认为SysffsMIdiaAuxMauler-SeaToRead()参数存在问题…或者这个函数被窃听了?
以上来自于百度翻译 以下为原文 Hello, I think, It isn't the problem because program block before the DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_STATUS step I think there is a problem for SYS_FS_MEDIA_MANAGER_SectorRead() parameters ... or perhaps this function is bugged ? |
|
|
|
我发现问题:所有的SST25缓冲区都被使用,它必须增加一个值,定义了DrvsSt2525BuffryObjyNoMyBySyssfsMyAuaMauleMeReleSerkRead()保留一个缓冲区,但是我不知道如何在我的读取操作完成时释放这个缓冲区…
以上来自于百度翻译 以下为原文 I found problem : all SST25 buffers are used, it must incremente value of #define DRV_SST25_BUFFER_OBJ_NUMBER void DEBUG_SYS_FS_MEDIA_MANAGER_TASK(void){ // You must incremente +1 DRV_SST25_BUFFER_OBJ_NUMBER to use this function typedef enum { DEBUG_SYS_FS_MEDIA_MANAGER_SM__INIT = 0, DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_CMD, DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_STATUS, DEBUG_SYS_FS_MEDIA_MANAGER_SM__END } DEBUG_SYS_FS_MEDIA_MANAGER_SM; static DEBUG_SYS_FS_MEDIA_MANAGER_SM sm = DEBUG_SYS_FS_MEDIA_MANAGER_SM__INIT; static SYS_FS_MEDIA_BLOCK_COMMAND_HANDLE sysFsMedia_handle; static uint8_t data[4096]; static uint32_t sector_num = 0; switch(sm){ default: case DEBUG_SYS_FS_MEDIA_MANAGER_SM__INIT : //DRV_SST25_RegisterWithSysFs(x, y, z) sm = DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_CMD; break; case DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_CMD: { sysFsMedia_handle = SYS_FS_MEDIA_MANAGER_SectorRead(0, data, sector_num, 1); if(sysFsMedia_handle == SYS_FS_MEDIA_BLOCK_COMMAND_HANDLE_INVALID){ printf("[ERR] DEBUG_SYS_FS_MEDIA_MANAGER_TASK %prn", sysFsMedia_handle); return; } sm = DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_STATUS; break; } case DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_STATUS: { SYS_FS_MEDIA_COMMAND_STATUS status = SYS_FS_MEDIA_MANAGER_CommandStatusGet(0, sysFsMedia_handle); if(status != SYS_FS_MEDIA_COMMAND_COMPLETED){ return; } int i,j; for(j=0; j<16; j++){ for(i=0; i<16; i++){ printf("%02X ", data[(j*16)+i]); } printf(" "); for(i=0; i<16; i++){ printf("%c", data[(j*16)+i]); } printf("rn"); } //sm = DEBUG_SYS_FS_MEDIA_MANAGER_SM__END; sm = DEBUG_SYS_FS_MEDIA_MANAGER_SM__READ_CMD; break; } case DEBUG_SYS_FS_MEDIA_MANAGER_SM__END: // How to do to free the buffer ? break; } } SYS_FS_MEDIA_MANAGER_SectorRead() reserve a buffer but I don't know how to do to free this buffer when my read operation is finished... |
|
|
|
|
|
|
|
这个代码是为你操作的吗?在Demo项目中,DRVYSST25L BuffSeryObjo编号的值为5,必须增加到6,以满足调试代码的要求。
以上来自于百度翻译 以下为原文 And this code operate for you ? In demo project, value of DRV_SST25_BUFFER_OBJ_NUMBER is 5 and must be increment to 6 to excute my debug code. |
|
|
|
我在DrviSt2525Orth.h中发现了一个错误:在DrviSt2525Obl结构中,CMDPARAMLSEN必须是UTI1616T(不是UTIT8YT)。问题是在页面编程功能中:UIT88T太小,不能存储256×4的64 MB内存值。现在我可以在SST25和SST26上传网页,我可以显示网页。想限制网页的大小来存储自定义数据(配置文件、日志文件、临时固件、……):是否可以在不更改协调源代码的情况下执行?是否可以在闪光灯上同时使用MPFS2和FAT?
以上来自于百度翻译 以下为原文 I found a bug in drv_sst25_local.h : in DRV_SST25_OBJ structure, cmdParamsLen must be a uint16_t (not a uint8_t). Problem is in page program write function : uint8_t is too small to store the value of 256+4 for 64Mb memories. Now I can upload web pages on SST25 and SST26 and I can display web pages. I would like to limit size of web pages to store custom data (config file, log files, temporary firmware, ...) : is it possible to do it without change source code of Harmony ? => is it possible to use MPFS2 and FAT at the same time on a Flash ? |
|
|
|
只有小组成员才能发言,加入小组>>
5171 浏览 9 评论
2001 浏览 8 评论
1931 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3176 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2228 浏览 5 评论
737浏览 1评论
622浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
509浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
635浏览 0评论
533浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 09:18 , Processed in 1.524534 second(s), Total 82, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号