添加tftp协议

1.usb连接上之后,可以使用tftp协议传输文件
2.解决写入sd卡时如果buff地址不是4字节对齐时数据错位的问题
This commit is contained in:
2025-10-18 23:55:18 +08:00
parent 045cff4cc6
commit eab38c8eff
8 changed files with 246 additions and 266 deletions

View File

@@ -122,13 +122,11 @@ static uint32_t exmem_malloc(uint32_t size) {
uint32_t nmemb; // <20><>Ҫ<EFBFBD><D2AA><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
uint32_t cmemb = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
uint32_t i;
// if(!mallco_dev.memrdy)mallco_dev.init();//δ<><CEB4>ʼ<EFBFBD><CABC>,<2C><>ִ<EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>
if (size == 0)
return 0XFFFFFFFF; // <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
nmemb = size / exmemblksize; // <20><>ȡ<EFBFBD><C8A1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
if (size % exmemblksize)
nmemb++;
// <20><>ȡ<EFBFBD><C8A1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
nmemb = (size+exmemblksize-1) / exmemblksize;
for (offset = exmemtblsize - 1; offset >= 0; offset--) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if (!exmallco_dev.memmap[offset])
@@ -152,23 +150,19 @@ static uint32_t exmem_malloc(uint32_t size) {
// offset:<3A>ڴ<EFBFBD><DAB4><EFBFBD>ַƫ<D6B7><C6AB>
// <20><><EFBFBD><EFBFBD>ֵ:0,<2C>ͷųɹ<C5B3>;1,<2C>ͷ<EFBFBD>ʧ<EFBFBD><CAA7>;
static uint8_t exmem_free(uint32_t offset) {
uint32_t i;
if (!exmallco_dev.memrdy) // δ<><CEB4>ʼ<EFBFBD><CABC>,<2C><>ִ<EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>
{
// mallco_dev.init();
return 1; // δ<><CEB4>ʼ<EFBFBD><EFBFBD>
}
if (offset < exmemsize) // ƫ<><C6AB><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
{
uint32_t index = offset / exmemblksize; // ƫ<><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t nmemb = exmallco_dev.memmap[index]; // <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (i = 0; i < nmemb; i++) // <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
// ƫ<><C6AB><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>.
if (offset < exmemsize) {
// ƫ<><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t index = offset / exmemblksize;
// <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t nmemb = exmallco_dev.memmap[index];
// <EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < nmemb; i++) {
exmallco_dev.memmap[index + i] = 0;
}
return 0;
} else
return 2; // ƫ<>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>.
return 2;
}
//------------------------------------<2D>ڲ<EFBFBD>SRAM---------------------------------------