diff --git a/4G/code/core/cmd.lua b/4G/code/core/cmd.lua index 9285d37..f1793b4 100644 --- a/4G/code/core/cmd.lua +++ b/4G/code/core/cmd.lua @@ -1,14 +1,115 @@ --- CMD -require "linksocket" -require "socket" -require "sys" +-- cmd.lua +-- 功能:解析串口帧,调用 linksocket 接口,执行系统命令 -function handleCmd01(subCmd, payload) - --sendToSocket(subCmd, payload) --向socket发送数据 - sendToSocket(subCmd, payload) - log.info("CMD 0x01 received, sub:", subCmd, "data len:", #payload) +local log = require "log" +local sys = require "sys" +local uart = require "uart" +local linksocket = require "linksocket" + +local uartID = 1 + +-- 辅助函数:字节转十六进制(调试用) +local function toHexcode(str) + if not str then return "" end + local hex = "" + for i = 1, #str do + hex = hex .. string.format("%02X", str:byte(i)) + end + return hex end -function handleCmd02(subCmd, payload) +-- 发送通用响应帧:55 AA 83 subCmd socketId status AA 55 +local function sendResponse(subCmd, socketId, status) + local frame = string.char(0x55, 0xAA, 0x83, subCmd, socketId, status, 0xAA, 0x55) + uart.write(uartID, frame) + log.debug("Response: subCmd=", subCmd, "socketId=", socketId, "status=", status) +end + +-- 命令处理函数 +local function handleCmd01(subCmd, payload) + local socketId = subCmd + if socketId < 1 or socketId > 6 then + log.error("Invalid socket id in cmd 0x01:", socketId) + sendResponse(0x01, socketId, 1) + return + end + local success = linksocket.sendToSocket(socketId, payload) + if not success then + log.warn("Send failed, socket", socketId, "not connected") + sendResponse(0x01, socketId, 1) + else + log.info("Data sent to socket", socketId, "len=", #payload) + end +end + +local function handleCmd02() + log.info("System restart command received") sys.restart() -end \ No newline at end of file +end + +local function handleCmd03(subCmd, payload) + if #payload < 1 then + log.error("Cmd 0x03 missing socket id") + return + end + local socketId = payload:byte(1) + if socketId < 1 or socketId > 6 then + log.error("Invalid socket id in cmd 0x03:", socketId) + sendResponse(subCmd, socketId, 1) + return + end + + if subCmd == 0x01 then + local ok = linksocket.setKeepConnecting(socketId, true) + if ok then + sendResponse(subCmd, socketId, 3) + else + sendResponse(subCmd, socketId, 1) + end + elseif subCmd == 0x02 then + local ok = linksocket.setKeepConnecting(socketId, false) + if ok then + sendResponse(subCmd, socketId, 0) + else + sendResponse(subCmd, socketId, 1) + end + else + log.error("Unknown subCmd for 0x03:", subCmd) + sendResponse(subCmd, socketId, 1) + end +end + +-- 对外接口:处理串口接收到的原始数据 +local function process(rawData) + if not rawData or #rawData < 5 then + log.warn("Short data received, ignore") + return + end + + log.info("CMD raw data:", toHexcode(rawData)) + + if rawData:byte(1) == 0x55 and rawData:byte(2) == 0xAA + and rawData:byte(-2) == 0xAA and rawData:byte(-1) == 0x55 then + local mainCmd = rawData:byte(3) + local subCmd = rawData:byte(4) + local payload = rawData:sub(5, -3) + + if mainCmd == 0x01 then + handleCmd01(subCmd, payload) + elseif mainCmd == 0x02 then + handleCmd02() + elseif mainCmd == 0x03 then + handleCmd03(subCmd, payload) + else + log.warn("Unknown main command:", mainCmd) + end + else + log.warn("Invalid frame header/footer") + end +end + +-- 模块接口 +local M = { + process = process, +} +return M \ No newline at end of file diff --git a/4G/code/core/linksocket.lua b/4G/code/core/linksocket.lua index d89451f..d013d81 100644 --- a/4G/code/core/linksocket.lua +++ b/4G/code/core/linksocket.lua @@ -1,83 +1,160 @@ -require "socket" -require "log" +-- linksocket.lua +-- 功能:管理多个 TCP Socket 连接,支持手动连接/断开,自动重连,数据收发 --- 目标服务器IP和端口 -local ip, port = "121.43.69.62", "8767" --- 连接数量 -local clientCount = 1 --- 存储所有客户端 +local log = require "log" +local sys = require "sys" +local socket = require "socket" + +-- 服务器配置 +local SERVER_IP = "121.43.69.62" +local SERVER_PORT = 8767 +local MAX_CLIENTS = 6 + +-- 客户端状态表 local clients = {} +local keepConnecting = {} +local recvCallback = nil --- 初始化多个socket连接 -for i = 1, clientCount do - local client = { +-- 初始化所有socket槽位 +for i = 1, MAX_CLIENTS do + clients[i] = { id = i, socket = nil, connected = false } + keepConnecting[i] = false +end - -- 为每个socket创建独立的连接任务 +-- 发送连接状态响应 +local function sendConnStatus(subCmd, socketId, status) + local uart = require "uart" + local frame = string.char(0x55, 0xAA, 0x83, subCmd, socketId, status, 0xAA, 0x55) + uart.write(1, frame) + log.debug("Socket", socketId, "status response, subCmd=", subCmd, "status=", status) +end + +-- 设置是否保持连接 +local function setKeepConnecting(id, keep) + if id < 1 or id > MAX_CLIENTS then + return false + end + keepConnecting[id] = keep + if not keep and clients[id].connected and clients[id].socket then + clients[id].socket:close() + clients[id].socket = nil + clients[id].connected = false + sendConnStatus(0x02, id, 0) + end + return true +end + +-- 发送数据到指定socket +local function sendToSocket(id, data) + if id < 1 or id > MAX_CLIENTS then + log.error("sendToSocket: invalid id", id) + return false + end + if clients[id].connected and clients[id].socket then + clients[id].socket:asyncSend(data) + log.info("Send to socket", id, "len=", #data) + return true + else + log.warn("Socket", id, "not connected, cannot send") + return false + end +end + +-- 注册数据接收回调 +local function setRecvCallback(cb) + recvCallback = cb +end + +-- 为每个socket创建常驻任务 +for id = 1, MAX_CLIENTS do sys.taskInit(function() + local socketId = id + log.debug("Socket", socketId, "control task started") + while true do - while not socket.isReady() do sys.wait(1000) end - client.socket = socket.tcp() - log.debug("Client " .. client.id .. ": Connecting to " .. ip .. ":" .. port) - while not client.socket:connect(ip, port) do - log.warn("Client " .. client.id .. ": Connection failed, retrying...") - sys.wait(2000) + while not keepConnecting[socketId] do + sys.wait(1000) end - client.connected = true - log.debug("Client " .. client.id .. ": Connected successfully") - -- 发送连接成功信息到串口 - uart.write(1, "Socket " .. client.id .. " connected\r\n") - -- 保持连接并处理数据 - while client.socket:asyncSelect(60, "ping") do end + while keepConnecting[socketId] do + while not socket.isReady() do + if not keepConnecting[socketId] then break end + sys.wait(1000) + end + if not keepConnecting[socketId] then break end - client.connected = false - client.socket:close() - log.error("Client " .. client.id .. ": Disconnected") - -- 发送断开连接信息到串口 + local sock = socket.tcp() + log.debug("Socket", socketId, "connecting to", SERVER_IP, SERVER_PORT) + local connected = false + while not connected and keepConnecting[socketId] do + connected = sock:connect(SERVER_IP, SERVER_PORT) + if not connected then + log.warn("Socket", socketId, "connect failed, retry in 3s") + sys.wait(3000) + end + end + + if not keepConnecting[socketId] then + if sock then sock:close() end + break + end + + clients[socketId].socket = sock + clients[socketId].connected = true + log.info("Socket", socketId, "connected") + sendConnStatus(0x01, socketId, 0) + + while keepConnecting[socketId] and clients[socketId].connected do + local ok = sock:asyncSelect(60, "recv") + if not ok then + log.warn("Socket", socketId, "connection lost") + break + end + sys.wait(100) + end + + if clients[socketId].socket then + clients[socketId].socket:close() + clients[socketId].socket = nil + end + clients[socketId].connected = false + + if not keepConnecting[socketId] then + sendConnStatus(0x02, socketId, 0) + break + else + log.info("Socket", socketId, "will reconnect after 3s") + sys.wait(3000) + end + end end end) - - -- 存储客户端 - clients[i] = client end - -local function toHexcode(str) - local hexcode = "" - for i = 1, #str do - hexcode = hexcode .. string.format("%02X", str:byte(i)) - end - return hexcode -end - --- 测试代码,异步回调接收数据 -sys.subscribe("SOCKET_RECV", function(id) - -- 遍历所有客户端,找到对应的连接 +-- 订阅底层Socket接收事件 +sys.subscribe("SOCKET_RECV", function(socketId) for i, client in ipairs(clients) do - if client.socket and client.socket.id == id then - -- 转发到串口,添加socket标识,并清理数据 + if client.socket and client.socket.id == socketId and client.connected then local data = client.socket:asyncRecv() - log.info("Client " .. client.id .. ": Received data: " .. toHexcode(data)) - -- 转发到串口,添加socket标识 - local frame = string.char(0x55) .. string.char(0xAA) .. string.char(0x01) .. string.char(i) .. string.char(#data) .. data .. string.char(0xAA) .. string.char(0x55) - uart.write(1, frame) - + if data and #data > 0 then + log.info("Socket", client.id, "received data len=", #data) + if recvCallback then + recvCallback(client.id, data) + end + end break end end end) - - --- 发送数据到指定socket -function sendToSocket(id_byte, msg) - if clients[id_byte] and clients[id_byte].socket and clients[id_byte].connected then - clients[id_byte].socket:asyncSend(msg) - else - log.error("Socket " .. id_byte .. " not connected or does not exist") - end -end +-- 模块接口 +local M = { + setKeepConnecting = setKeepConnecting, + sendToSocket = sendToSocket, + setRecvCallback = setRecvCallback, +} +return M \ No newline at end of file diff --git a/4G/code/core/main.lua b/4G/code/core/main.lua index 1639328..f5fc995 100644 --- a/4G/code/core/main.lua +++ b/4G/code/core/main.lua @@ -1,9 +1,5 @@ ---- testSocket --- @module asyncSocket --- @author AIRM2M --- @license MIT --- @copyright openLuat.com --- @release 2018.10.27 +-- main.lua +-- 功能:初始化硬件、网络、串口,注册回调,启动系统 PROJECT = "4G_NETWORK" VERSION = "1.0.0" @@ -11,55 +7,42 @@ VERSION = "1.0.0" require "sys" require "net" require "log" -require "cmd" require "uart" -require "linksocket" +require "netLed" +require "pmd" --- 初始化 UART1 -uart.setup(1, 115200, 8, uart.PAR_NONE, uart.STOP_1) +-- 初始化UART1 +local uartID = 1 +uart.setup(uartID, 115200, 8, uart.PAR_NONE, uart.STOP_1) -- 启动网络指示灯功能模块 -require "netLed" -pmd.ldoset(2,pmd.LDO_VLCD) -netLed.setup(true,pio.P0_1,pio.P0_4) +pmd.ldoset(2, pmd.LDO_VLCD) +netLed.setup(true, pio.P0_1, pio.P0_4) -local uartID = 1 +-- 初始化网络 +net.startQueryAll(8 * 1000, 60 * 1000) +ril.request("AT+RNDISCALL=0,1") +-- 加载自定义模块(必须放在网络初始化之后) +local cmd = require "cmd" +local linksocket = require "linksocket" -local function toHexcode(str) - local hexcode = "" - for i = 1, #str do - hexcode = hexcode .. string.format("%02X", str:byte(i)) - end - return hexcode -end +-- 注册Socket数据接收回调 +linksocket.setRecvCallback(function(socketId, data) + -- 打包帧格式:55 AA 01 id len data AA 55 + local frame = string.char(0x55, 0xAA, 0x01, socketId, #data) .. data .. string.char(0xAA, 0x55) + uart.write(uartID, frame) + log.info("Forward data from socket", socketId, "len=", #data) +end) +-- 串口数据接收处理 uart.on(uartID, "receive", function() local data = uart.read(uartID, 300) - if data and type(data) == "string" and #data > 0 then - log.info("UART received:", toHexcode(data)) - if data:byte(1) == 0x55 and data:byte(2) == 0xAA and data:byte(-2) == 0xAA and data:byte(-1) == 0x55 then - local Main_Cmd = data:byte(3) - local Sub_Cmd = data:byte(4) - local payload = data:sub(5, -3) - - if Main_Cmd ==0x01 then - handleCmd01(Sub_Cmd, payload) - end - if Main_Cmd == 0x02 then - handleCmd02(Sub_Cmd, payload) - end - end - else - log.warn("UART receive callback triggered but no valid data") + if data and #data > 0 then + cmd.process(data) end end) - -net.startQueryAll(8 * 1000, 60 * 1000) - -ril.request("AT+RNDISCALL=0,1") - - +-- 启动系统 sys.init(0, 0) sys.run() \ No newline at end of file diff --git a/Core/.mxproject b/Core/.mxproject index 29fb20e..b11189d 100644 --- a/Core/.mxproject +++ b/Core/.mxproject @@ -1,8 +1,8 @@ [PreviousLibFiles] -LibFiles=Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_eth.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_eth_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_bus.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_crs.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_system.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_utils.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dmamux.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_mdma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_def.h;Drivers\STM32H7xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_fmc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_nand.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_usart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_lpuart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart_ex.h;Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h;Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h;Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h;Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h;Middlewares\Third_Party\FreeRTOS\Source\include\list.h;Middlewares\Third_Party\FreeRTOS\Source\include\message_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_prototypes.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h;Middlewares\Third_Party\FreeRTOS\Source\include\portable.h;Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h;Middlewares\Third_Party\FreeRTOS\Source\include\queue.h;Middlewares\Third_Party\FreeRTOS\Source\include\semphr.h;Middlewares\Third_Party\FreeRTOS\Source\include\stack_macros.h;Middlewares\Third_Party\FreeRTOS\Source\include\StackMacros.h;Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\task.h;Middlewares\Third_Party\FreeRTOS\Source\include\timers.h;Middlewares\Third_Party\FreeRTOS\Source\include\atomic.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.h;Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h;Drivers\BSP\Components\lan8742\lan8742.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ccp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap_ms.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap-md5.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap-new.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\eap.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\eui64.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\fsm.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ipcp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ipv6cp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\lcp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\magic.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\mppe.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp_impl.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppapi.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppcrypt.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppdebug.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppoe.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppol2tp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppos.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\upap.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\vj.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ecp.h;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_fmc.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_nand.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c;Drivers\BSP\Components\lan8742\lan8742.c;Middlewares\Third_Party\LwIP\src\netif\ppp\auth.c;Middlewares\Third_Party\LwIP\src\netif\ppp\ccp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\chap_ms.c;Middlewares\Third_Party\LwIP\src\netif\ppp\chap-md5.c;Middlewares\Third_Party\LwIP\src\netif\ppp\chap-new.c;Middlewares\Third_Party\LwIP\src\netif\ppp\demand.c;Middlewares\Third_Party\LwIP\src\netif\ppp\eap.c;Middlewares\Third_Party\LwIP\src\netif\ppp\eui64.c;Middlewares\Third_Party\LwIP\src\netif\ppp\fsm.c;Middlewares\Third_Party\LwIP\src\netif\ppp\ipcp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\ipv6cp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\lcp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\magic.c;Middlewares\Third_Party\LwIP\src\netif\ppp\mppe.c;Middlewares\Third_Party\LwIP\src\netif\ppp\multilink.c;Middlewares\Third_Party\LwIP\src\netif\ppp\ppp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\pppapi.c;Middlewares\Third_Party\LwIP\src\netif\ppp\pppcrypt.c;Middlewares\Third_Party\LwIP\src\netif\ppp\pppoe.c;Middlewares\Third_Party\LwIP\src\netif\ppp\pppol2tp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\pppos.c;Middlewares\Third_Party\LwIP\src\netif\ppp\upap.c;Middlewares\Third_Party\LwIP\src\netif\ppp\utils.c;Middlewares\Third_Party\LwIP\src\netif\ppp\vj.c;Middlewares\Third_Party\LwIP\src\netif\bridgeif.c;Middlewares\Third_Party\LwIP\src\netif\bridgeif_fdb.c;Middlewares\Third_Party\LwIP\src\netif\ethernet.c;Middlewares\Third_Party\LwIP\src\netif\lowpan6.c;Middlewares\Third_Party\LwIP\src\netif\lowpan6_ble.c;Middlewares\Third_Party\LwIP\src\netif\lowpan6_common.c;Middlewares\Third_Party\LwIP\src\netif\slipif.c;Middlewares\Third_Party\LwIP\src\netif\zepif.c;Middlewares\Third_Party\LwIP\src\netif\ppp\ecp.c;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_eth.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_eth_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_bus.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_crs.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_system.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_utils.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dmamux.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_mdma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_def.h;Drivers\STM32H7xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_fmc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_nand.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_usart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_lpuart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart_ex.h;Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h;Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h;Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h;Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h;Middlewares\Third_Party\FreeRTOS\Source\include\list.h;Middlewares\Third_Party\FreeRTOS\Source\include\message_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_prototypes.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h;Middlewares\Third_Party\FreeRTOS\Source\include\portable.h;Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h;Middlewares\Third_Party\FreeRTOS\Source\include\queue.h;Middlewares\Third_Party\FreeRTOS\Source\include\semphr.h;Middlewares\Third_Party\FreeRTOS\Source\include\stack_macros.h;Middlewares\Third_Party\FreeRTOS\Source\include\StackMacros.h;Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\task.h;Middlewares\Third_Party\FreeRTOS\Source\include\timers.h;Middlewares\Third_Party\FreeRTOS\Source\include\atomic.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.h;Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h;Drivers\BSP\Components\lan8742\lan8742.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ccp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap_ms.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap-md5.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap-new.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\eap.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\eui64.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\fsm.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ipcp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ipv6cp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\lcp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\magic.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\mppe.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp_impl.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppapi.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppcrypt.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppdebug.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppoe.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppol2tp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppos.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\upap.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\vj.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ecp.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h743xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\system_stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\system_stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;Middlewares\Third_Party\LwIP\src\include\lwip\altcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\altcp_tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\altcp_tls.h;Middlewares\Third_Party\LwIP\src\include\lwip\api.h;Middlewares\Third_Party\LwIP\src\include\lwip\arch.h;Middlewares\Third_Party\LwIP\src\include\lwip\autoip.h;Middlewares\Third_Party\LwIP\src\include\lwip\debug.h;Middlewares\Third_Party\LwIP\src\include\lwip\def.h;Middlewares\Third_Party\LwIP\src\include\lwip\dhcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\dhcp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\dns.h;Middlewares\Third_Party\LwIP\src\include\lwip\err.h;Middlewares\Third_Party\LwIP\src\include\lwip\errno.h;Middlewares\Third_Party\LwIP\src\include\lwip\etharp.h;Middlewares\Third_Party\LwIP\src\include\lwip\ethip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\icmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\icmp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\if_api.h;Middlewares\Third_Party\LwIP\src\include\lwip\igmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\inet.h;Middlewares\Third_Party\LwIP\src\include\lwip\inet_chksum.h;Middlewares\Third_Party\LwIP\src\include\lwip\init.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4_frag.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_frag.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_zone.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\mem.h;Middlewares\Third_Party\LwIP\src\include\lwip\memp.h;Middlewares\Third_Party\LwIP\src\include\lwip\mld6.h;Middlewares\Third_Party\LwIP\src\include\lwip\nd6.h;Middlewares\Third_Party\LwIP\src\include\lwip\netbuf.h;Middlewares\Third_Party\LwIP\src\include\lwip\netdb.h;Middlewares\Third_Party\LwIP\src\include\lwip\netif.h;Middlewares\Third_Party\LwIP\src\include\lwip\netifapi.h;Middlewares\Third_Party\LwIP\src\include\lwip\opt.h;Middlewares\Third_Party\LwIP\src\include\lwip\pbuf.h;Middlewares\Third_Party\LwIP\src\include\lwip\raw.h;Middlewares\Third_Party\LwIP\src\include\lwip\sio.h;Middlewares\Third_Party\LwIP\src\include\lwip\snmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\sockets.h;Middlewares\Third_Party\LwIP\src\include\lwip\stats.h;Middlewares\Third_Party\LwIP\src\include\lwip\sys.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcpbase.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcpip.h;Middlewares\Third_Party\LwIP\src\include\lwip\timeouts.h;Middlewares\Third_Party\LwIP\src\include\lwip\udp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\altcp_proxyconnect.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\altcp_tls_mbedtls_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\fs.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\httpd.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\httpd_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\http_client.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\lwiperf.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\netbiosns.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\netbiosns_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\smtp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\smtp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmpv3.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_core.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_mib2.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_scalar.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_snmpv2_framework.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_snmpv2_usm.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_table.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_threadsync.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\sntp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\sntp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\tftp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\tftp_server.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\altcp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\api_msg.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\memp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\memp_std.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\mem_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\nd6_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\raw_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\sockets_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\tcpip_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\tcp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\autoip.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dhcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dhcp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dns.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\etharp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ethernet.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\iana.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\icmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\icmp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ieee.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\igmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip4.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\mld6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\nd6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\udp.h;Middlewares\Third_Party\LwIP\src\include\netif\bridgeif.h;Middlewares\Third_Party\LwIP\src\include\netif\bridgeif_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\etharp.h;Middlewares\Third_Party\LwIP\src\include\netif\ethernet.h;Middlewares\Third_Party\LwIP\src\include\netif\ieee802154.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_ble.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_common.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\slipif.h;Middlewares\Third_Party\LwIP\src\include\netif\zepif.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\netdb.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\arpa\inet.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\net\if.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\sys\socket.h;Middlewares\Third_Party\LwIP\src\include\compat\stdc\errno.h;Middlewares\Third_Party\LwIP\system\arch\bpstruct.h;Middlewares\Third_Party\LwIP\system\arch\cc.h;Middlewares\Third_Party\LwIP\system\arch\cpu.h;Middlewares\Third_Party\LwIP\system\arch\epstruct.h;Middlewares\Third_Party\LwIP\system\arch\init.h;Middlewares\Third_Party\LwIP\system\arch\lib.h;Middlewares\Third_Party\LwIP\system\arch\perf.h;Middlewares\Third_Party\LwIP\system\arch\sys_arch.h;Middlewares\Third_Party\LwIP\src\api\api_lib.c;Middlewares\Third_Party\LwIP\src\api\api_msg.c;Middlewares\Third_Party\LwIP\src\api\err.c;Middlewares\Third_Party\LwIP\src\api\if_api.c;Middlewares\Third_Party\LwIP\src\api\netbuf.c;Middlewares\Third_Party\LwIP\src\api\netdb.c;Middlewares\Third_Party\LwIP\src\api\netifapi.c;Middlewares\Third_Party\LwIP\src\api\sockets.c;Middlewares\Third_Party\LwIP\src\api\tcpip.c;Middlewares\Third_Party\LwIP\src\core\altcp.c;Middlewares\Third_Party\LwIP\src\core\altcp_alloc.c;Middlewares\Third_Party\LwIP\src\core\altcp_tcp.c;Middlewares\Third_Party\LwIP\src\core\def.c;Middlewares\Third_Party\LwIP\src\core\dns.c;Middlewares\Third_Party\LwIP\src\core\inet_chksum.c;Middlewares\Third_Party\LwIP\src\core\init.c;Middlewares\Third_Party\LwIP\src\core\ip.c;Middlewares\Third_Party\LwIP\src\core\mem.c;Middlewares\Third_Party\LwIP\src\core\memp.c;Middlewares\Third_Party\LwIP\src\core\netif.c;Middlewares\Third_Party\LwIP\src\core\pbuf.c;Middlewares\Third_Party\LwIP\src\core\raw.c;Middlewares\Third_Party\LwIP\src\core\stats.c;Middlewares\Third_Party\LwIP\src\core\sys.c;Middlewares\Third_Party\LwIP\src\core\tcp.c;Middlewares\Third_Party\LwIP\src\core\tcp_in.c;Middlewares\Third_Party\LwIP\src\core\tcp_out.c;Middlewares\Third_Party\LwIP\src\core\timeouts.c;Middlewares\Third_Party\LwIP\src\core\udp.c;Middlewares\Third_Party\LwIP\src\core\ipv4\autoip.c;Middlewares\Third_Party\LwIP\src\core\ipv4\dhcp.c;Middlewares\Third_Party\LwIP\src\core\ipv4\etharp.c;Middlewares\Third_Party\LwIP\src\core\ipv4\icmp.c;Middlewares\Third_Party\LwIP\src\core\ipv4\igmp.c;Middlewares\Third_Party\LwIP\src\core\ipv4\ip4.c;Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_addr.c;Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_frag.c;Middlewares\Third_Party\LwIP\src\core\ipv6\dhcp6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\ethip6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\icmp6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\inet6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\ip6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_addr.c;Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_frag.c;Middlewares\Third_Party\LwIP\src\core\ipv6\mld6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\nd6.c;Middlewares\Third_Party\LwIP\system\OS\sys_arch.c;Middlewares\Third_Party\LwIP\src\apps\mqtt\mqtt.c;Middlewares\Third_Party\LwIP\src\include\lwip\altcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\altcp_tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\altcp_tls.h;Middlewares\Third_Party\LwIP\src\include\lwip\api.h;Middlewares\Third_Party\LwIP\src\include\lwip\arch.h;Middlewares\Third_Party\LwIP\src\include\lwip\autoip.h;Middlewares\Third_Party\LwIP\src\include\lwip\debug.h;Middlewares\Third_Party\LwIP\src\include\lwip\def.h;Middlewares\Third_Party\LwIP\src\include\lwip\dhcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\dhcp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\dns.h;Middlewares\Third_Party\LwIP\src\include\lwip\err.h;Middlewares\Third_Party\LwIP\src\include\lwip\errno.h;Middlewares\Third_Party\LwIP\src\include\lwip\etharp.h;Middlewares\Third_Party\LwIP\src\include\lwip\ethip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\icmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\icmp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\if_api.h;Middlewares\Third_Party\LwIP\src\include\lwip\igmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\inet.h;Middlewares\Third_Party\LwIP\src\include\lwip\inet_chksum.h;Middlewares\Third_Party\LwIP\src\include\lwip\init.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4_frag.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_frag.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_zone.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\mem.h;Middlewares\Third_Party\LwIP\src\include\lwip\memp.h;Middlewares\Third_Party\LwIP\src\include\lwip\mld6.h;Middlewares\Third_Party\LwIP\src\include\lwip\nd6.h;Middlewares\Third_Party\LwIP\src\include\lwip\netbuf.h;Middlewares\Third_Party\LwIP\src\include\lwip\netdb.h;Middlewares\Third_Party\LwIP\src\include\lwip\netif.h;Middlewares\Third_Party\LwIP\src\include\lwip\netifapi.h;Middlewares\Third_Party\LwIP\src\include\lwip\opt.h;Middlewares\Third_Party\LwIP\src\include\lwip\pbuf.h;Middlewares\Third_Party\LwIP\src\include\lwip\raw.h;Middlewares\Third_Party\LwIP\src\include\lwip\sio.h;Middlewares\Third_Party\LwIP\src\include\lwip\snmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\sockets.h;Middlewares\Third_Party\LwIP\src\include\lwip\stats.h;Middlewares\Third_Party\LwIP\src\include\lwip\sys.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcpbase.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcpip.h;Middlewares\Third_Party\LwIP\src\include\lwip\timeouts.h;Middlewares\Third_Party\LwIP\src\include\lwip\udp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\altcp_proxyconnect.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\altcp_tls_mbedtls_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\fs.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\httpd.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\httpd_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\http_client.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\lwiperf.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\netbiosns.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\netbiosns_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\smtp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\smtp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmpv3.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_core.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_mib2.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_scalar.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_snmpv2_framework.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_snmpv2_usm.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_table.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_threadsync.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\sntp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\sntp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\tftp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\tftp_server.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\altcp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\api_msg.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\memp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\memp_std.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\mem_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\nd6_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\raw_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\sockets_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\tcpip_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\tcp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\autoip.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dhcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dhcp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dns.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\etharp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ethernet.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\iana.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\icmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\icmp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ieee.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\igmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip4.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\mld6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\nd6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\udp.h;Middlewares\Third_Party\LwIP\src\include\netif\bridgeif.h;Middlewares\Third_Party\LwIP\src\include\netif\bridgeif_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\etharp.h;Middlewares\Third_Party\LwIP\src\include\netif\ethernet.h;Middlewares\Third_Party\LwIP\src\include\netif\ieee802154.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_ble.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_common.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\slipif.h;Middlewares\Third_Party\LwIP\src\include\netif\zepif.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\netdb.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\arpa\inet.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\net\if.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\sys\socket.h;Middlewares\Third_Party\LwIP\src\include\compat\stdc\errno.h;Middlewares\Third_Party\LwIP\system\arch\bpstruct.h;Middlewares\Third_Party\LwIP\system\arch\cc.h;Middlewares\Third_Party\LwIP\system\arch\cpu.h;Middlewares\Third_Party\LwIP\system\arch\epstruct.h;Middlewares\Third_Party\LwIP\system\arch\init.h;Middlewares\Third_Party\LwIP\system\arch\lib.h;Middlewares\Third_Party\LwIP\system\arch\perf.h;Middlewares\Third_Party\LwIP\system\arch\sys_arch.h;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_armclang_ltm.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv81mml.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm35p.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; +LibFiles=Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_eth.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_eth_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_bus.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_crs.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_system.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_utils.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dmamux.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_mdma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_def.h;Drivers\STM32H7xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_usart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_lpuart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart_ex.h;Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h;Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h;Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h;Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h;Middlewares\Third_Party\FreeRTOS\Source\include\list.h;Middlewares\Third_Party\FreeRTOS\Source\include\message_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_prototypes.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h;Middlewares\Third_Party\FreeRTOS\Source\include\portable.h;Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h;Middlewares\Third_Party\FreeRTOS\Source\include\queue.h;Middlewares\Third_Party\FreeRTOS\Source\include\semphr.h;Middlewares\Third_Party\FreeRTOS\Source\include\stack_macros.h;Middlewares\Third_Party\FreeRTOS\Source\include\StackMacros.h;Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\task.h;Middlewares\Third_Party\FreeRTOS\Source\include\timers.h;Middlewares\Third_Party\FreeRTOS\Source\include\atomic.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.h;Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h;Drivers\BSP\Components\lan8742\lan8742.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ccp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap_ms.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap-md5.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap-new.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\eap.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\eui64.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\fsm.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ipcp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ipv6cp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\lcp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\magic.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\mppe.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp_impl.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppapi.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppcrypt.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppdebug.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppoe.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppol2tp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppos.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\upap.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\vj.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ecp.h;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c;Drivers\BSP\Components\lan8742\lan8742.c;Middlewares\Third_Party\LwIP\src\netif\ppp\auth.c;Middlewares\Third_Party\LwIP\src\netif\ppp\ccp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\chap_ms.c;Middlewares\Third_Party\LwIP\src\netif\ppp\chap-md5.c;Middlewares\Third_Party\LwIP\src\netif\ppp\chap-new.c;Middlewares\Third_Party\LwIP\src\netif\ppp\demand.c;Middlewares\Third_Party\LwIP\src\netif\ppp\eap.c;Middlewares\Third_Party\LwIP\src\netif\ppp\eui64.c;Middlewares\Third_Party\LwIP\src\netif\ppp\fsm.c;Middlewares\Third_Party\LwIP\src\netif\ppp\ipcp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\ipv6cp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\lcp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\magic.c;Middlewares\Third_Party\LwIP\src\netif\ppp\mppe.c;Middlewares\Third_Party\LwIP\src\netif\ppp\multilink.c;Middlewares\Third_Party\LwIP\src\netif\ppp\ppp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\pppapi.c;Middlewares\Third_Party\LwIP\src\netif\ppp\pppcrypt.c;Middlewares\Third_Party\LwIP\src\netif\ppp\pppoe.c;Middlewares\Third_Party\LwIP\src\netif\ppp\pppol2tp.c;Middlewares\Third_Party\LwIP\src\netif\ppp\pppos.c;Middlewares\Third_Party\LwIP\src\netif\ppp\upap.c;Middlewares\Third_Party\LwIP\src\netif\ppp\utils.c;Middlewares\Third_Party\LwIP\src\netif\ppp\vj.c;Middlewares\Third_Party\LwIP\src\netif\bridgeif.c;Middlewares\Third_Party\LwIP\src\netif\bridgeif_fdb.c;Middlewares\Third_Party\LwIP\src\netif\ethernet.c;Middlewares\Third_Party\LwIP\src\netif\lowpan6.c;Middlewares\Third_Party\LwIP\src\netif\lowpan6_ble.c;Middlewares\Third_Party\LwIP\src\netif\lowpan6_common.c;Middlewares\Third_Party\LwIP\src\netif\slipif.c;Middlewares\Third_Party\LwIP\src\netif\zepif.c;Middlewares\Third_Party\LwIP\src\netif\ppp\ecp.c;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_eth.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_eth_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_bus.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_crs.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_system.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_utils.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dmamux.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_mdma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_def.h;Drivers\STM32H7xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_usart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_lpuart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart_ex.h;Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h;Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h;Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h;Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h;Middlewares\Third_Party\FreeRTOS\Source\include\list.h;Middlewares\Third_Party\FreeRTOS\Source\include\message_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_prototypes.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h;Middlewares\Third_Party\FreeRTOS\Source\include\portable.h;Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h;Middlewares\Third_Party\FreeRTOS\Source\include\queue.h;Middlewares\Third_Party\FreeRTOS\Source\include\semphr.h;Middlewares\Third_Party\FreeRTOS\Source\include\stack_macros.h;Middlewares\Third_Party\FreeRTOS\Source\include\StackMacros.h;Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\task.h;Middlewares\Third_Party\FreeRTOS\Source\include\timers.h;Middlewares\Third_Party\FreeRTOS\Source\include\atomic.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.h;Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h;Drivers\BSP\Components\lan8742\lan8742.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ccp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap_ms.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap-md5.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\chap-new.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\eap.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\eui64.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\fsm.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ipcp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ipv6cp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\lcp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\magic.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\mppe.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp_impl.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ppp_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppapi.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppcrypt.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppdebug.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppoe.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppol2tp.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\pppos.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\upap.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\vj.h;Middlewares\Third_Party\LwIP\src\include\netif\ppp\ecp.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h743xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\system_stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\system_stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;Middlewares\Third_Party\LwIP\src\include\lwip\altcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\altcp_tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\altcp_tls.h;Middlewares\Third_Party\LwIP\src\include\lwip\api.h;Middlewares\Third_Party\LwIP\src\include\lwip\arch.h;Middlewares\Third_Party\LwIP\src\include\lwip\autoip.h;Middlewares\Third_Party\LwIP\src\include\lwip\debug.h;Middlewares\Third_Party\LwIP\src\include\lwip\def.h;Middlewares\Third_Party\LwIP\src\include\lwip\dhcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\dhcp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\dns.h;Middlewares\Third_Party\LwIP\src\include\lwip\err.h;Middlewares\Third_Party\LwIP\src\include\lwip\errno.h;Middlewares\Third_Party\LwIP\src\include\lwip\etharp.h;Middlewares\Third_Party\LwIP\src\include\lwip\ethip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\icmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\icmp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\if_api.h;Middlewares\Third_Party\LwIP\src\include\lwip\igmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\inet.h;Middlewares\Third_Party\LwIP\src\include\lwip\inet_chksum.h;Middlewares\Third_Party\LwIP\src\include\lwip\init.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4_frag.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_frag.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_zone.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\mem.h;Middlewares\Third_Party\LwIP\src\include\lwip\memp.h;Middlewares\Third_Party\LwIP\src\include\lwip\mld6.h;Middlewares\Third_Party\LwIP\src\include\lwip\nd6.h;Middlewares\Third_Party\LwIP\src\include\lwip\netbuf.h;Middlewares\Third_Party\LwIP\src\include\lwip\netdb.h;Middlewares\Third_Party\LwIP\src\include\lwip\netif.h;Middlewares\Third_Party\LwIP\src\include\lwip\netifapi.h;Middlewares\Third_Party\LwIP\src\include\lwip\opt.h;Middlewares\Third_Party\LwIP\src\include\lwip\pbuf.h;Middlewares\Third_Party\LwIP\src\include\lwip\raw.h;Middlewares\Third_Party\LwIP\src\include\lwip\sio.h;Middlewares\Third_Party\LwIP\src\include\lwip\snmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\sockets.h;Middlewares\Third_Party\LwIP\src\include\lwip\stats.h;Middlewares\Third_Party\LwIP\src\include\lwip\sys.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcpbase.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcpip.h;Middlewares\Third_Party\LwIP\src\include\lwip\timeouts.h;Middlewares\Third_Party\LwIP\src\include\lwip\udp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\altcp_proxyconnect.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\altcp_tls_mbedtls_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\fs.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\httpd.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\httpd_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\http_client.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\lwiperf.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\netbiosns.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\netbiosns_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\smtp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\smtp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmpv3.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_core.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_mib2.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_scalar.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_snmpv2_framework.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_snmpv2_usm.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_table.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_threadsync.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\sntp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\sntp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\tftp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\tftp_server.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\altcp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\api_msg.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\memp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\memp_std.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\mem_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\nd6_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\raw_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\sockets_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\tcpip_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\tcp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\autoip.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dhcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dhcp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dns.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\etharp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ethernet.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\iana.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\icmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\icmp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ieee.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\igmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip4.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\mld6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\nd6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\udp.h;Middlewares\Third_Party\LwIP\src\include\netif\bridgeif.h;Middlewares\Third_Party\LwIP\src\include\netif\bridgeif_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\etharp.h;Middlewares\Third_Party\LwIP\src\include\netif\ethernet.h;Middlewares\Third_Party\LwIP\src\include\netif\ieee802154.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_ble.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_common.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\slipif.h;Middlewares\Third_Party\LwIP\src\include\netif\zepif.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\netdb.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\arpa\inet.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\net\if.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\sys\socket.h;Middlewares\Third_Party\LwIP\src\include\compat\stdc\errno.h;Middlewares\Third_Party\LwIP\system\arch\bpstruct.h;Middlewares\Third_Party\LwIP\system\arch\cc.h;Middlewares\Third_Party\LwIP\system\arch\cpu.h;Middlewares\Third_Party\LwIP\system\arch\epstruct.h;Middlewares\Third_Party\LwIP\system\arch\init.h;Middlewares\Third_Party\LwIP\system\arch\lib.h;Middlewares\Third_Party\LwIP\system\arch\perf.h;Middlewares\Third_Party\LwIP\system\arch\sys_arch.h;Middlewares\Third_Party\LwIP\src\api\api_lib.c;Middlewares\Third_Party\LwIP\src\api\api_msg.c;Middlewares\Third_Party\LwIP\src\api\err.c;Middlewares\Third_Party\LwIP\src\api\if_api.c;Middlewares\Third_Party\LwIP\src\api\netbuf.c;Middlewares\Third_Party\LwIP\src\api\netdb.c;Middlewares\Third_Party\LwIP\src\api\netifapi.c;Middlewares\Third_Party\LwIP\src\api\sockets.c;Middlewares\Third_Party\LwIP\src\api\tcpip.c;Middlewares\Third_Party\LwIP\src\core\altcp.c;Middlewares\Third_Party\LwIP\src\core\altcp_alloc.c;Middlewares\Third_Party\LwIP\src\core\altcp_tcp.c;Middlewares\Third_Party\LwIP\src\core\def.c;Middlewares\Third_Party\LwIP\src\core\dns.c;Middlewares\Third_Party\LwIP\src\core\inet_chksum.c;Middlewares\Third_Party\LwIP\src\core\init.c;Middlewares\Third_Party\LwIP\src\core\ip.c;Middlewares\Third_Party\LwIP\src\core\mem.c;Middlewares\Third_Party\LwIP\src\core\memp.c;Middlewares\Third_Party\LwIP\src\core\netif.c;Middlewares\Third_Party\LwIP\src\core\pbuf.c;Middlewares\Third_Party\LwIP\src\core\raw.c;Middlewares\Third_Party\LwIP\src\core\stats.c;Middlewares\Third_Party\LwIP\src\core\sys.c;Middlewares\Third_Party\LwIP\src\core\tcp.c;Middlewares\Third_Party\LwIP\src\core\tcp_in.c;Middlewares\Third_Party\LwIP\src\core\tcp_out.c;Middlewares\Third_Party\LwIP\src\core\timeouts.c;Middlewares\Third_Party\LwIP\src\core\udp.c;Middlewares\Third_Party\LwIP\src\core\ipv4\autoip.c;Middlewares\Third_Party\LwIP\src\core\ipv4\dhcp.c;Middlewares\Third_Party\LwIP\src\core\ipv4\etharp.c;Middlewares\Third_Party\LwIP\src\core\ipv4\icmp.c;Middlewares\Third_Party\LwIP\src\core\ipv4\igmp.c;Middlewares\Third_Party\LwIP\src\core\ipv4\ip4.c;Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_addr.c;Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_frag.c;Middlewares\Third_Party\LwIP\src\core\ipv6\dhcp6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\ethip6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\icmp6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\inet6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\ip6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_addr.c;Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_frag.c;Middlewares\Third_Party\LwIP\src\core\ipv6\mld6.c;Middlewares\Third_Party\LwIP\src\core\ipv6\nd6.c;Middlewares\Third_Party\LwIP\system\OS\sys_arch.c;Middlewares\Third_Party\LwIP\src\apps\mqtt\mqtt.c;Middlewares\Third_Party\LwIP\src\include\lwip\altcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\altcp_tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\altcp_tls.h;Middlewares\Third_Party\LwIP\src\include\lwip\api.h;Middlewares\Third_Party\LwIP\src\include\lwip\arch.h;Middlewares\Third_Party\LwIP\src\include\lwip\autoip.h;Middlewares\Third_Party\LwIP\src\include\lwip\debug.h;Middlewares\Third_Party\LwIP\src\include\lwip\def.h;Middlewares\Third_Party\LwIP\src\include\lwip\dhcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\dhcp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\dns.h;Middlewares\Third_Party\LwIP\src\include\lwip\err.h;Middlewares\Third_Party\LwIP\src\include\lwip\errno.h;Middlewares\Third_Party\LwIP\src\include\lwip\etharp.h;Middlewares\Third_Party\LwIP\src\include\lwip\ethip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\icmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\icmp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\if_api.h;Middlewares\Third_Party\LwIP\src\include\lwip\igmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\inet.h;Middlewares\Third_Party\LwIP\src\include\lwip\inet_chksum.h;Middlewares\Third_Party\LwIP\src\include\lwip\init.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip4_frag.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_frag.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip6_zone.h;Middlewares\Third_Party\LwIP\src\include\lwip\ip_addr.h;Middlewares\Third_Party\LwIP\src\include\lwip\mem.h;Middlewares\Third_Party\LwIP\src\include\lwip\memp.h;Middlewares\Third_Party\LwIP\src\include\lwip\mld6.h;Middlewares\Third_Party\LwIP\src\include\lwip\nd6.h;Middlewares\Third_Party\LwIP\src\include\lwip\netbuf.h;Middlewares\Third_Party\LwIP\src\include\lwip\netdb.h;Middlewares\Third_Party\LwIP\src\include\lwip\netif.h;Middlewares\Third_Party\LwIP\src\include\lwip\netifapi.h;Middlewares\Third_Party\LwIP\src\include\lwip\opt.h;Middlewares\Third_Party\LwIP\src\include\lwip\pbuf.h;Middlewares\Third_Party\LwIP\src\include\lwip\raw.h;Middlewares\Third_Party\LwIP\src\include\lwip\sio.h;Middlewares\Third_Party\LwIP\src\include\lwip\snmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\sockets.h;Middlewares\Third_Party\LwIP\src\include\lwip\stats.h;Middlewares\Third_Party\LwIP\src\include\lwip\sys.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcpbase.h;Middlewares\Third_Party\LwIP\src\include\lwip\tcpip.h;Middlewares\Third_Party\LwIP\src\include\lwip\timeouts.h;Middlewares\Third_Party\LwIP\src\include\lwip\udp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\altcp_proxyconnect.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\altcp_tls_mbedtls_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\fs.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\httpd.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\httpd_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\http_client.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\lwiperf.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mdns_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\mqtt_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\netbiosns.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\netbiosns_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\smtp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\smtp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmpv3.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_core.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_mib2.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_scalar.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_snmpv2_framework.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_snmpv2_usm.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_table.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\snmp_threadsync.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\sntp.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\sntp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\tftp_opts.h;Middlewares\Third_Party\LwIP\src\include\lwip\apps\tftp_server.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\altcp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\api_msg.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\memp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\memp_std.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\mem_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\nd6_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\raw_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\sockets_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\tcpip_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\priv\tcp_priv.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\autoip.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dhcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dhcp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\dns.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\etharp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ethernet.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\iana.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\icmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\icmp6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ieee.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\igmp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip4.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\ip6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\mld6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\nd6.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\tcp.h;Middlewares\Third_Party\LwIP\src\include\lwip\prot\udp.h;Middlewares\Third_Party\LwIP\src\include\netif\bridgeif.h;Middlewares\Third_Party\LwIP\src\include\netif\bridgeif_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\etharp.h;Middlewares\Third_Party\LwIP\src\include\netif\ethernet.h;Middlewares\Third_Party\LwIP\src\include\netif\ieee802154.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_ble.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_common.h;Middlewares\Third_Party\LwIP\src\include\netif\lowpan6_opts.h;Middlewares\Third_Party\LwIP\src\include\netif\slipif.h;Middlewares\Third_Party\LwIP\src\include\netif\zepif.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\netdb.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\arpa\inet.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\net\if.h;Middlewares\Third_Party\LwIP\src\include\compat\posix\sys\socket.h;Middlewares\Third_Party\LwIP\src\include\compat\stdc\errno.h;Middlewares\Third_Party\LwIP\system\arch\bpstruct.h;Middlewares\Third_Party\LwIP\system\arch\cc.h;Middlewares\Third_Party\LwIP\system\arch\cpu.h;Middlewares\Third_Party\LwIP\system\arch\epstruct.h;Middlewares\Third_Party\LwIP\system\arch\init.h;Middlewares\Third_Party\LwIP\system\arch\lib.h;Middlewares\Third_Party\LwIP\system\arch\perf.h;Middlewares\Third_Party\LwIP\system\arch\sys_arch.h;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_armclang_ltm.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv81mml.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm35p.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; [PreviousUsedKeilFiles] -SourceFiles=..\Core\Src\main.c;..\Core\Src\gpio.c;..\Core\Src\freertos.c;..\Core\Src\dma.c;..\Core\Src\fmc.c;..\LWIP\App\lwip.c;..\LWIP\Target\ethernetif.c;..\Core\Src\memorymap.c;..\Core\Src\usart.c;..\Core\Src\stm32h7xx_it.c;..\Core\Src\stm32h7xx_hal_msp.c;..\Core\Src\stm32h7xx_hal_timebase_tim.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_fmc.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_nand.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.c;..\Middlewares\Third_Party\FreeRTOS\Source\croutine.c;..\Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;..\Middlewares\Third_Party\FreeRTOS\Source\list.c;..\Middlewares\Third_Party\FreeRTOS\Source\queue.c;..\Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;..\Middlewares\Third_Party\FreeRTOS\Source\tasks.c;..\Middlewares\Third_Party\FreeRTOS\Source\timers.c;..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c;..\Drivers\BSP\Components\lan8742\lan8742.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\auth.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ccp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap_ms.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-md5.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-new.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\demand.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eui64.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\fsm.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipv6cp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\lcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\magic.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\mppe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\multilink.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ppp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppapi.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppcrypt.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppoe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppol2tp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppos.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\upap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\utils.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\vj.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif_fdb.c;..\Middlewares\Third_Party\LwIP\src\netif\ethernet.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_ble.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_common.c;..\Middlewares\Third_Party\LwIP\src\netif\slipif.c;..\Middlewares\Third_Party\LwIP\src\netif\zepif.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ecp.c;..\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;..\Middlewares\Third_Party\LwIP\src\api\api_lib.c;..\Middlewares\Third_Party\LwIP\src\api\api_msg.c;..\Middlewares\Third_Party\LwIP\src\api\err.c;..\Middlewares\Third_Party\LwIP\src\api\if_api.c;..\Middlewares\Third_Party\LwIP\src\api\netbuf.c;..\Middlewares\Third_Party\LwIP\src\api\netdb.c;..\Middlewares\Third_Party\LwIP\src\api\netifapi.c;..\Middlewares\Third_Party\LwIP\src\api\sockets.c;..\Middlewares\Third_Party\LwIP\src\api\tcpip.c;..\Middlewares\Third_Party\LwIP\src\core\altcp.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_alloc.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_tcp.c;..\Middlewares\Third_Party\LwIP\src\core\def.c;..\Middlewares\Third_Party\LwIP\src\core\dns.c;..\Middlewares\Third_Party\LwIP\src\core\inet_chksum.c;..\Middlewares\Third_Party\LwIP\src\core\init.c;..\Middlewares\Third_Party\LwIP\src\core\ip.c;..\Middlewares\Third_Party\LwIP\src\core\mem.c;..\Middlewares\Third_Party\LwIP\src\core\memp.c;..\Middlewares\Third_Party\LwIP\src\core\netif.c;..\Middlewares\Third_Party\LwIP\src\core\pbuf.c;..\Middlewares\Third_Party\LwIP\src\core\raw.c;..\Middlewares\Third_Party\LwIP\src\core\stats.c;..\Middlewares\Third_Party\LwIP\src\core\sys.c;..\Middlewares\Third_Party\LwIP\src\core\tcp.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_in.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_out.c;..\Middlewares\Third_Party\LwIP\src\core\timeouts.c;..\Middlewares\Third_Party\LwIP\src\core\udp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\autoip.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\dhcp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\etharp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\icmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\igmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\dhcp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ethip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\icmp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\inet6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\mld6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\nd6.c;..\Middlewares\Third_Party\LwIP\system\OS\sys_arch.c;..\Middlewares\Third_Party\LwIP\src\apps\mqtt\mqtt.c;..\Core\Src\system_stm32h7xx.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_fmc.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_nand.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.c;..\Middlewares\Third_Party\FreeRTOS\Source\croutine.c;..\Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;..\Middlewares\Third_Party\FreeRTOS\Source\list.c;..\Middlewares\Third_Party\FreeRTOS\Source\queue.c;..\Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;..\Middlewares\Third_Party\FreeRTOS\Source\tasks.c;..\Middlewares\Third_Party\FreeRTOS\Source\timers.c;..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c;..\Drivers\BSP\Components\lan8742\lan8742.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\auth.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ccp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap_ms.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-md5.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-new.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\demand.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eui64.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\fsm.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipv6cp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\lcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\magic.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\mppe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\multilink.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ppp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppapi.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppcrypt.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppoe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppol2tp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppos.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\upap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\utils.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\vj.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif_fdb.c;..\Middlewares\Third_Party\LwIP\src\netif\ethernet.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_ble.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_common.c;..\Middlewares\Third_Party\LwIP\src\netif\slipif.c;..\Middlewares\Third_Party\LwIP\src\netif\zepif.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ecp.c;..\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;..\Middlewares\Third_Party\LwIP\src\api\api_lib.c;..\Middlewares\Third_Party\LwIP\src\api\api_msg.c;..\Middlewares\Third_Party\LwIP\src\api\err.c;..\Middlewares\Third_Party\LwIP\src\api\if_api.c;..\Middlewares\Third_Party\LwIP\src\api\netbuf.c;..\Middlewares\Third_Party\LwIP\src\api\netdb.c;..\Middlewares\Third_Party\LwIP\src\api\netifapi.c;..\Middlewares\Third_Party\LwIP\src\api\sockets.c;..\Middlewares\Third_Party\LwIP\src\api\tcpip.c;..\Middlewares\Third_Party\LwIP\src\core\altcp.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_alloc.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_tcp.c;..\Middlewares\Third_Party\LwIP\src\core\def.c;..\Middlewares\Third_Party\LwIP\src\core\dns.c;..\Middlewares\Third_Party\LwIP\src\core\inet_chksum.c;..\Middlewares\Third_Party\LwIP\src\core\init.c;..\Middlewares\Third_Party\LwIP\src\core\ip.c;..\Middlewares\Third_Party\LwIP\src\core\mem.c;..\Middlewares\Third_Party\LwIP\src\core\memp.c;..\Middlewares\Third_Party\LwIP\src\core\netif.c;..\Middlewares\Third_Party\LwIP\src\core\pbuf.c;..\Middlewares\Third_Party\LwIP\src\core\raw.c;..\Middlewares\Third_Party\LwIP\src\core\stats.c;..\Middlewares\Third_Party\LwIP\src\core\sys.c;..\Middlewares\Third_Party\LwIP\src\core\tcp.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_in.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_out.c;..\Middlewares\Third_Party\LwIP\src\core\timeouts.c;..\Middlewares\Third_Party\LwIP\src\core\udp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\autoip.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\dhcp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\etharp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\icmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\igmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\dhcp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ethip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\icmp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\inet6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\mld6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\nd6.c;..\Middlewares\Third_Party\LwIP\system\OS\sys_arch.c;..\Middlewares\Third_Party\LwIP\src\apps\mqtt\mqtt.c;..\Core\Src\system_stm32h7xx.c;;;..\Middlewares\Third_Party\FreeRTOS\Source\croutine.c;..\Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;..\Middlewares\Third_Party\FreeRTOS\Source\list.c;..\Middlewares\Third_Party\FreeRTOS\Source\queue.c;..\Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;..\Middlewares\Third_Party\FreeRTOS\Source\tasks.c;..\Middlewares\Third_Party\FreeRTOS\Source\timers.c;..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\auth.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ccp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap_ms.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-md5.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-new.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\demand.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eui64.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\fsm.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipv6cp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\lcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\magic.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\mppe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\multilink.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ppp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppapi.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppcrypt.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppoe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppol2tp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppos.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\upap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\utils.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\vj.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif_fdb.c;..\Middlewares\Third_Party\LwIP\src\netif\ethernet.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_ble.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_common.c;..\Middlewares\Third_Party\LwIP\src\netif\slipif.c;..\Middlewares\Third_Party\LwIP\src\netif\zepif.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ecp.c;..\Middlewares\Third_Party\LwIP\src\api\api_lib.c;..\Middlewares\Third_Party\LwIP\src\api\api_msg.c;..\Middlewares\Third_Party\LwIP\src\api\err.c;..\Middlewares\Third_Party\LwIP\src\api\if_api.c;..\Middlewares\Third_Party\LwIP\src\api\netbuf.c;..\Middlewares\Third_Party\LwIP\src\api\netdb.c;..\Middlewares\Third_Party\LwIP\src\api\netifapi.c;..\Middlewares\Third_Party\LwIP\src\api\sockets.c;..\Middlewares\Third_Party\LwIP\src\api\tcpip.c;..\Middlewares\Third_Party\LwIP\src\core\altcp.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_alloc.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_tcp.c;..\Middlewares\Third_Party\LwIP\src\core\def.c;..\Middlewares\Third_Party\LwIP\src\core\dns.c;..\Middlewares\Third_Party\LwIP\src\core\inet_chksum.c;..\Middlewares\Third_Party\LwIP\src\core\init.c;..\Middlewares\Third_Party\LwIP\src\core\ip.c;..\Middlewares\Third_Party\LwIP\src\core\mem.c;..\Middlewares\Third_Party\LwIP\src\core\memp.c;..\Middlewares\Third_Party\LwIP\src\core\netif.c;..\Middlewares\Third_Party\LwIP\src\core\pbuf.c;..\Middlewares\Third_Party\LwIP\src\core\raw.c;..\Middlewares\Third_Party\LwIP\src\core\stats.c;..\Middlewares\Third_Party\LwIP\src\core\sys.c;..\Middlewares\Third_Party\LwIP\src\core\tcp.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_in.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_out.c;..\Middlewares\Third_Party\LwIP\src\core\timeouts.c;..\Middlewares\Third_Party\LwIP\src\core\udp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\autoip.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\dhcp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\etharp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\icmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\igmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\dhcp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ethip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\icmp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\inet6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\mld6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\nd6.c;..\Middlewares\Third_Party\LwIP\system\OS\sys_arch.c;..\Middlewares\Third_Party\LwIP\src\apps\mqtt\mqtt.c; +SourceFiles=..\Core\Src\main.c;..\Core\Src\gpio.c;..\Core\Src\freertos.c;..\Core\Src\dma.c;..\LWIP\App\lwip.c;..\LWIP\Target\ethernetif.c;..\Core\Src\memorymap.c;..\Core\Src\usart.c;..\Core\Src\stm32h7xx_it.c;..\Core\Src\stm32h7xx_hal_msp.c;..\Core\Src\stm32h7xx_hal_timebase_tim.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.c;..\Middlewares\Third_Party\FreeRTOS\Source\croutine.c;..\Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;..\Middlewares\Third_Party\FreeRTOS\Source\list.c;..\Middlewares\Third_Party\FreeRTOS\Source\queue.c;..\Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;..\Middlewares\Third_Party\FreeRTOS\Source\tasks.c;..\Middlewares\Third_Party\FreeRTOS\Source\timers.c;..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c;..\Drivers\BSP\Components\lan8742\lan8742.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\auth.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ccp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap_ms.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-md5.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-new.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\demand.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eui64.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\fsm.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipv6cp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\lcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\magic.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\mppe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\multilink.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ppp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppapi.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppcrypt.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppoe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppol2tp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppos.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\upap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\utils.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\vj.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif_fdb.c;..\Middlewares\Third_Party\LwIP\src\netif\ethernet.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_ble.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_common.c;..\Middlewares\Third_Party\LwIP\src\netif\slipif.c;..\Middlewares\Third_Party\LwIP\src\netif\zepif.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ecp.c;..\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;..\Middlewares\Third_Party\LwIP\src\api\api_lib.c;..\Middlewares\Third_Party\LwIP\src\api\api_msg.c;..\Middlewares\Third_Party\LwIP\src\api\err.c;..\Middlewares\Third_Party\LwIP\src\api\if_api.c;..\Middlewares\Third_Party\LwIP\src\api\netbuf.c;..\Middlewares\Third_Party\LwIP\src\api\netdb.c;..\Middlewares\Third_Party\LwIP\src\api\netifapi.c;..\Middlewares\Third_Party\LwIP\src\api\sockets.c;..\Middlewares\Third_Party\LwIP\src\api\tcpip.c;..\Middlewares\Third_Party\LwIP\src\core\altcp.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_alloc.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_tcp.c;..\Middlewares\Third_Party\LwIP\src\core\def.c;..\Middlewares\Third_Party\LwIP\src\core\dns.c;..\Middlewares\Third_Party\LwIP\src\core\inet_chksum.c;..\Middlewares\Third_Party\LwIP\src\core\init.c;..\Middlewares\Third_Party\LwIP\src\core\ip.c;..\Middlewares\Third_Party\LwIP\src\core\mem.c;..\Middlewares\Third_Party\LwIP\src\core\memp.c;..\Middlewares\Third_Party\LwIP\src\core\netif.c;..\Middlewares\Third_Party\LwIP\src\core\pbuf.c;..\Middlewares\Third_Party\LwIP\src\core\raw.c;..\Middlewares\Third_Party\LwIP\src\core\stats.c;..\Middlewares\Third_Party\LwIP\src\core\sys.c;..\Middlewares\Third_Party\LwIP\src\core\tcp.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_in.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_out.c;..\Middlewares\Third_Party\LwIP\src\core\timeouts.c;..\Middlewares\Third_Party\LwIP\src\core\udp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\autoip.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\dhcp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\etharp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\icmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\igmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\dhcp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ethip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\icmp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\inet6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\mld6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\nd6.c;..\Middlewares\Third_Party\LwIP\system\OS\sys_arch.c;..\Middlewares\Third_Party\LwIP\src\apps\mqtt\mqtt.c;..\Core\Src\system_stm32h7xx.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.c;..\Middlewares\Third_Party\FreeRTOS\Source\croutine.c;..\Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;..\Middlewares\Third_Party\FreeRTOS\Source\list.c;..\Middlewares\Third_Party\FreeRTOS\Source\queue.c;..\Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;..\Middlewares\Third_Party\FreeRTOS\Source\tasks.c;..\Middlewares\Third_Party\FreeRTOS\Source\timers.c;..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c;..\Drivers\BSP\Components\lan8742\lan8742.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\auth.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ccp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap_ms.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-md5.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-new.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\demand.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eui64.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\fsm.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipv6cp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\lcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\magic.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\mppe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\multilink.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ppp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppapi.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppcrypt.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppoe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppol2tp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppos.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\upap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\utils.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\vj.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif_fdb.c;..\Middlewares\Third_Party\LwIP\src\netif\ethernet.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_ble.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_common.c;..\Middlewares\Third_Party\LwIP\src\netif\slipif.c;..\Middlewares\Third_Party\LwIP\src\netif\zepif.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ecp.c;..\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;..\Middlewares\Third_Party\LwIP\src\api\api_lib.c;..\Middlewares\Third_Party\LwIP\src\api\api_msg.c;..\Middlewares\Third_Party\LwIP\src\api\err.c;..\Middlewares\Third_Party\LwIP\src\api\if_api.c;..\Middlewares\Third_Party\LwIP\src\api\netbuf.c;..\Middlewares\Third_Party\LwIP\src\api\netdb.c;..\Middlewares\Third_Party\LwIP\src\api\netifapi.c;..\Middlewares\Third_Party\LwIP\src\api\sockets.c;..\Middlewares\Third_Party\LwIP\src\api\tcpip.c;..\Middlewares\Third_Party\LwIP\src\core\altcp.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_alloc.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_tcp.c;..\Middlewares\Third_Party\LwIP\src\core\def.c;..\Middlewares\Third_Party\LwIP\src\core\dns.c;..\Middlewares\Third_Party\LwIP\src\core\inet_chksum.c;..\Middlewares\Third_Party\LwIP\src\core\init.c;..\Middlewares\Third_Party\LwIP\src\core\ip.c;..\Middlewares\Third_Party\LwIP\src\core\mem.c;..\Middlewares\Third_Party\LwIP\src\core\memp.c;..\Middlewares\Third_Party\LwIP\src\core\netif.c;..\Middlewares\Third_Party\LwIP\src\core\pbuf.c;..\Middlewares\Third_Party\LwIP\src\core\raw.c;..\Middlewares\Third_Party\LwIP\src\core\stats.c;..\Middlewares\Third_Party\LwIP\src\core\sys.c;..\Middlewares\Third_Party\LwIP\src\core\tcp.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_in.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_out.c;..\Middlewares\Third_Party\LwIP\src\core\timeouts.c;..\Middlewares\Third_Party\LwIP\src\core\udp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\autoip.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\dhcp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\etharp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\icmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\igmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\dhcp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ethip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\icmp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\inet6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\mld6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\nd6.c;..\Middlewares\Third_Party\LwIP\system\OS\sys_arch.c;..\Middlewares\Third_Party\LwIP\src\apps\mqtt\mqtt.c;..\Core\Src\system_stm32h7xx.c;;;..\Middlewares\Third_Party\FreeRTOS\Source\croutine.c;..\Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;..\Middlewares\Third_Party\FreeRTOS\Source\list.c;..\Middlewares\Third_Party\FreeRTOS\Source\queue.c;..\Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;..\Middlewares\Third_Party\FreeRTOS\Source\tasks.c;..\Middlewares\Third_Party\FreeRTOS\Source\timers.c;..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\auth.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ccp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap_ms.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-md5.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\chap-new.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\demand.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\eui64.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\fsm.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ipv6cp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\lcp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\magic.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\mppe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\multilink.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ppp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppapi.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppcrypt.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppoe.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppol2tp.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\pppos.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\upap.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\utils.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\vj.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif.c;..\Middlewares\Third_Party\LwIP\src\netif\bridgeif_fdb.c;..\Middlewares\Third_Party\LwIP\src\netif\ethernet.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_ble.c;..\Middlewares\Third_Party\LwIP\src\netif\lowpan6_common.c;..\Middlewares\Third_Party\LwIP\src\netif\slipif.c;..\Middlewares\Third_Party\LwIP\src\netif\zepif.c;..\Middlewares\Third_Party\LwIP\src\netif\ppp\ecp.c;..\Middlewares\Third_Party\LwIP\src\api\api_lib.c;..\Middlewares\Third_Party\LwIP\src\api\api_msg.c;..\Middlewares\Third_Party\LwIP\src\api\err.c;..\Middlewares\Third_Party\LwIP\src\api\if_api.c;..\Middlewares\Third_Party\LwIP\src\api\netbuf.c;..\Middlewares\Third_Party\LwIP\src\api\netdb.c;..\Middlewares\Third_Party\LwIP\src\api\netifapi.c;..\Middlewares\Third_Party\LwIP\src\api\sockets.c;..\Middlewares\Third_Party\LwIP\src\api\tcpip.c;..\Middlewares\Third_Party\LwIP\src\core\altcp.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_alloc.c;..\Middlewares\Third_Party\LwIP\src\core\altcp_tcp.c;..\Middlewares\Third_Party\LwIP\src\core\def.c;..\Middlewares\Third_Party\LwIP\src\core\dns.c;..\Middlewares\Third_Party\LwIP\src\core\inet_chksum.c;..\Middlewares\Third_Party\LwIP\src\core\init.c;..\Middlewares\Third_Party\LwIP\src\core\ip.c;..\Middlewares\Third_Party\LwIP\src\core\mem.c;..\Middlewares\Third_Party\LwIP\src\core\memp.c;..\Middlewares\Third_Party\LwIP\src\core\netif.c;..\Middlewares\Third_Party\LwIP\src\core\pbuf.c;..\Middlewares\Third_Party\LwIP\src\core\raw.c;..\Middlewares\Third_Party\LwIP\src\core\stats.c;..\Middlewares\Third_Party\LwIP\src\core\sys.c;..\Middlewares\Third_Party\LwIP\src\core\tcp.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_in.c;..\Middlewares\Third_Party\LwIP\src\core\tcp_out.c;..\Middlewares\Third_Party\LwIP\src\core\timeouts.c;..\Middlewares\Third_Party\LwIP\src\core\udp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\autoip.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\dhcp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\etharp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\icmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\igmp.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv4\ip4_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\dhcp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ethip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\icmp6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\inet6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_addr.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\ip6_frag.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\mld6.c;..\Middlewares\Third_Party\LwIP\src\core\ipv6\nd6.c;..\Middlewares\Third_Party\LwIP\system\OS\sys_arch.c;..\Middlewares\Third_Party\LwIP\src\apps\mqtt\mqtt.c; HeaderPath=..\Middlewares\Third_Party\LwIP\src\include;..\Middlewares\Third_Party\LwIP\system;..\Middlewares\Third_Party\LwIP\src\include;..\Middlewares\Third_Party\LwIP\system;..\Drivers\STM32H7xx_HAL_Driver\Inc;..\Drivers\STM32H7xx_HAL_Driver\Inc\Legacy;..\Middlewares\Third_Party\FreeRTOS\Source\include;..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS;..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F;..\Drivers\BSP\Components\lan8742;..\Middlewares\Third_Party\LwIP\src\include\netif\ppp;..\Drivers\CMSIS\Device\ST\STM32H7xx\Include;..\Middlewares\Third_Party\LwIP\src\include\lwip;..\Middlewares\Third_Party\LwIP\src\include\lwip\apps;..\Middlewares\Third_Party\LwIP\src\include\lwip\priv;..\Middlewares\Third_Party\LwIP\src\include\lwip\prot;..\Middlewares\Third_Party\LwIP\src\include\netif;..\Middlewares\Third_Party\LwIP\src\include\compat\posix;..\Middlewares\Third_Party\LwIP\src\include\compat\posix\arpa;..\Middlewares\Third_Party\LwIP\src\include\compat\posix\net;..\Middlewares\Third_Party\LwIP\src\include\compat\posix\sys;..\Middlewares\Third_Party\LwIP\src\include\compat\stdc;..\Middlewares\Third_Party\LwIP\system\arch;..\Drivers\CMSIS\Include;..\Core\Inc;..\LWIP\App;..\LWIP\Target; CDefines=USE_HAL_DRIVER;STM32H743xx;USE_HAL_DRIVER;USE_HAL_DRIVER; @@ -11,37 +11,35 @@ SourceFiles=;; [PreviousGenFiles] AdvancedFolderStructure=true -HeaderFileListSize=12 +HeaderFileListSize=11 HeaderFiles#0=..\Core\Inc\gpio.h HeaderFiles#1=..\Core\Inc\FreeRTOSConfig.h HeaderFiles#2=..\Core\Inc\dma.h -HeaderFiles#3=..\Core\Inc\fmc.h -HeaderFiles#4=..\LWIP\App\lwip.h -HeaderFiles#5=..\LWIP\Target\lwipopts.h -HeaderFiles#6=..\LWIP\Target\ethernetif.h -HeaderFiles#7=..\Core\Inc\memorymap.h -HeaderFiles#8=..\Core\Inc\usart.h -HeaderFiles#9=..\Core\Inc\stm32h7xx_it.h -HeaderFiles#10=..\Core\Inc\stm32h7xx_hal_conf.h -HeaderFiles#11=..\Core\Inc\main.h +HeaderFiles#3=..\LWIP\App\lwip.h +HeaderFiles#4=..\LWIP\Target\lwipopts.h +HeaderFiles#5=..\LWIP\Target\ethernetif.h +HeaderFiles#6=..\Core\Inc\memorymap.h +HeaderFiles#7=..\Core\Inc\usart.h +HeaderFiles#8=..\Core\Inc\stm32h7xx_it.h +HeaderFiles#9=..\Core\Inc\stm32h7xx_hal_conf.h +HeaderFiles#10=..\Core\Inc\main.h HeaderFolderListSize=3 HeaderPath#0=..\Core\Inc HeaderPath#1=..\LWIP\App HeaderPath#2=..\LWIP\Target HeaderFiles=; -SourceFileListSize=12 +SourceFileListSize=11 SourceFiles#0=..\Core\Src\gpio.c SourceFiles#1=..\Core\Src\freertos.c SourceFiles#2=..\Core\Src\dma.c -SourceFiles#3=..\Core\Src\fmc.c -SourceFiles#4=..\LWIP\App\lwip.c -SourceFiles#5=..\LWIP\Target\ethernetif.c -SourceFiles#6=..\Core\Src\memorymap.c -SourceFiles#7=..\Core\Src\usart.c -SourceFiles#8=..\Core\Src\stm32h7xx_it.c -SourceFiles#9=..\Core\Src\stm32h7xx_hal_msp.c -SourceFiles#10=..\Core\Src\stm32h7xx_hal_timebase_tim.c -SourceFiles#11=..\Core\Src\main.c +SourceFiles#3=..\LWIP\App\lwip.c +SourceFiles#4=..\LWIP\Target\ethernetif.c +SourceFiles#5=..\Core\Src\memorymap.c +SourceFiles#6=..\Core\Src\usart.c +SourceFiles#7=..\Core\Src\stm32h7xx_it.c +SourceFiles#8=..\Core\Src\stm32h7xx_hal_msp.c +SourceFiles#9=..\Core\Src\stm32h7xx_hal_timebase_tim.c +SourceFiles#10=..\Core\Src\main.c SourceFolderListSize=3 SourcePath#0=..\Core\Src SourcePath#1=..\LWIP\App diff --git a/Core/Core/Inc/fmc.h b/Core/Core/Inc/fmc.h deleted file mode 100644 index d5e8e39..0000000 --- a/Core/Core/Inc/fmc.h +++ /dev/null @@ -1,59 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * File Name : FMC.h - * Description : This file provides code for the configuration - * of the FMC peripheral. - ****************************************************************************** - * @attention - * - * Copyright (c) 2026 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __FMC_H -#define __FMC_H -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "main.h" - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -extern NAND_HandleTypeDef hnand1; - -/* USER CODE BEGIN Private defines */ - -/* USER CODE END Private defines */ - -void MX_FMC_Init(void); -void HAL_NAND_MspInit(NAND_HandleTypeDef* hnand); -void HAL_NAND_MspDeInit(NAND_HandleTypeDef* hnand); - -/* USER CODE BEGIN Prototypes */ - -/* USER CODE END Prototypes */ - -#ifdef __cplusplus -} -#endif -#endif /*__FMC_H */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/Core/Core/Inc/stm32h7xx_hal_conf.h b/Core/Core/Inc/stm32h7xx_hal_conf.h index 1f0ed12..0185ebc 100644 --- a/Core/Core/Inc/stm32h7xx_hal_conf.h +++ b/Core/Core/Inc/stm32h7xx_hal_conf.h @@ -47,7 +47,7 @@ /* #define HAL_DMA2D_MODULE_ENABLED */ #define HAL_ETH_MODULE_ENABLED /* #define HAL_ETH_LEGACY_MODULE_ENABLED */ -#define HAL_NAND_MODULE_ENABLED +/* #define HAL_NAND_MODULE_ENABLED */ /* #define HAL_NOR_MODULE_ENABLED */ /* #define HAL_OTFDEC_MODULE_ENABLED */ /* #define HAL_SRAM_MODULE_ENABLED */ diff --git a/Core/Core/Src/fmc.c b/Core/Core/Src/fmc.c deleted file mode 100644 index d0634e4..0000000 --- a/Core/Core/Src/fmc.c +++ /dev/null @@ -1,233 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * File Name : FMC.c - * Description : This file provides code for the configuration - * of the FMC peripheral. - ****************************************************************************** - * @attention - * - * Copyright (c) 2026 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Includes ------------------------------------------------------------------*/ -#include "fmc.h" - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -NAND_HandleTypeDef hnand1; - -/* FMC initialization function */ -void MX_FMC_Init(void) -{ - /* USER CODE BEGIN FMC_Init 0 */ - - /* USER CODE END FMC_Init 0 */ - - FMC_NAND_PCC_TimingTypeDef ComSpaceTiming = {0}; - FMC_NAND_PCC_TimingTypeDef AttSpaceTiming = {0}; - - /* USER CODE BEGIN FMC_Init 1 */ - - /* USER CODE END FMC_Init 1 */ - - /** Perform the NAND1 memory initialization sequence - */ - hnand1.Instance = FMC_NAND_DEVICE; - /* hnand1.Init */ - hnand1.Init.NandBank = FMC_NAND_BANK3; - hnand1.Init.Waitfeature = FMC_NAND_WAIT_FEATURE_ENABLE; - hnand1.Init.MemoryDataWidth = FMC_NAND_MEM_BUS_WIDTH_8; - hnand1.Init.EccComputation = FMC_NAND_ECC_DISABLE; - hnand1.Init.ECCPageSize = FMC_NAND_ECC_PAGE_SIZE_512BYTE; - hnand1.Init.TCLRSetupTime = 9; - hnand1.Init.TARSetupTime = 9; - /* hnand1.Config */ - hnand1.Config.PageSize = 2048; - hnand1.Config.SpareAreaSize = 64; - hnand1.Config.BlockSize = 64; - hnand1.Config.BlockNbr = 2048; - hnand1.Config.PlaneNbr = 2; - hnand1.Config.PlaneSize = 4096; - hnand1.Config.ExtraCommandEnable = DISABLE; - /* ComSpaceTiming */ - ComSpaceTiming.SetupTime = 9; - ComSpaceTiming.WaitSetupTime = 9; - ComSpaceTiming.HoldSetupTime = 10; - ComSpaceTiming.HiZSetupTime = 9; - /* AttSpaceTiming */ - AttSpaceTiming.SetupTime = 9; - AttSpaceTiming.WaitSetupTime = 9; - AttSpaceTiming.HoldSetupTime = 10; - AttSpaceTiming.HiZSetupTime = 9; - - if (HAL_NAND_Init(&hnand1, &ComSpaceTiming, &AttSpaceTiming) != HAL_OK) - { - Error_Handler( ); - } - - /* USER CODE BEGIN FMC_Init 2 */ - - /* USER CODE END FMC_Init 2 */ -} - -static uint32_t FMC_Initialized = 0; - -static void HAL_FMC_MspInit(void){ - /* USER CODE BEGIN FMC_MspInit 0 */ - - /* USER CODE END FMC_MspInit 0 */ - GPIO_InitTypeDef GPIO_InitStruct = {0}; - if (FMC_Initialized) { - return; - } - FMC_Initialized = 1; - RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; - - /** Initializes the peripherals clock - */ - PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_FMC; - PeriphClkInitStruct.FmcClockSelection = RCC_FMCCLKSOURCE_D1HCLK; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - { - Error_Handler(); - } - - /* Peripheral clock enable */ - __HAL_RCC_FMC_CLK_ENABLE(); - - /** FMC GPIO Configuration - PE7 ------> FMC_D4 - PE8 ------> FMC_D5 - PE9 ------> FMC_D6 - PE10 ------> FMC_D7 - PD11 ------> FMC_CLE - PD12 ------> FMC_ALE - PD14 ------> FMC_D0 - PD15 ------> FMC_D1 - PC6 ------> FMC_NWAIT - PC8 ------> FMC_NCE - PD0 ------> FMC_D2 - PD1 ------> FMC_D3 - PD4 ------> FMC_NOE - PD5 ------> FMC_NWE - */ - /* GPIO_InitStruct */ - GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - - HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - - /* GPIO_InitStruct */ - GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - - HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - - /* GPIO_InitStruct */ - GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1 - |GPIO_PIN_4|GPIO_PIN_5; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - - HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - - /* GPIO_InitStruct */ - GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_8; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF9_FMC; - - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - - /* USER CODE BEGIN FMC_MspInit 1 */ - - /* USER CODE END FMC_MspInit 1 */ -} - -void HAL_NAND_MspInit(NAND_HandleTypeDef* nandHandle){ - /* USER CODE BEGIN NAND_MspInit 0 */ - - /* USER CODE END NAND_MspInit 0 */ - HAL_FMC_MspInit(); - /* USER CODE BEGIN NAND_MspInit 1 */ - - /* USER CODE END NAND_MspInit 1 */ -} - -static uint32_t FMC_DeInitialized = 0; - -static void HAL_FMC_MspDeInit(void){ - /* USER CODE BEGIN FMC_MspDeInit 0 */ - - /* USER CODE END FMC_MspDeInit 0 */ - if (FMC_DeInitialized) { - return; - } - FMC_DeInitialized = 1; - /* Peripheral clock enable */ - __HAL_RCC_FMC_CLK_DISABLE(); - - /** FMC GPIO Configuration - PE7 ------> FMC_D4 - PE8 ------> FMC_D5 - PE9 ------> FMC_D6 - PE10 ------> FMC_D7 - PD11 ------> FMC_CLE - PD12 ------> FMC_ALE - PD14 ------> FMC_D0 - PD15 ------> FMC_D1 - PC6 ------> FMC_NWAIT - PC8 ------> FMC_NCE - PD0 ------> FMC_D2 - PD1 ------> FMC_D3 - PD4 ------> FMC_NOE - PD5 ------> FMC_NWE - */ - - HAL_GPIO_DeInit(GPIOE, GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10); - - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_14|GPIO_PIN_15 - |GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5); - - HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6|GPIO_PIN_8); - - /* USER CODE BEGIN FMC_MspDeInit 1 */ - - /* USER CODE END FMC_MspDeInit 1 */ -} - -void HAL_NAND_MspDeInit(NAND_HandleTypeDef* nandHandle){ - /* USER CODE BEGIN NAND_MspDeInit 0 */ - - /* USER CODE END NAND_MspDeInit 0 */ - HAL_FMC_MspDeInit(); - /* USER CODE BEGIN NAND_MspDeInit 1 */ - - /* USER CODE END NAND_MspDeInit 1 */ -} -/** - * @} - */ - -/** - * @} - */ diff --git a/Core/Core/Src/ftl.c b/Core/Core/Src/ftl.c deleted file mode 100644 index 95a31e9..0000000 --- a/Core/Core/Src/ftl.c +++ /dev/null @@ -1,749 +0,0 @@ -/** - **************************************************************************************************** - * @file ftl.c - * @author ԭŶ(ALIENTEK) - * @version V1.0 - * @date 2023-03-24 - * @brief NAND FLASH FTL㷨 - * @license Copyright (c) 2022-2032, ӿƼ޹˾ - **************************************************************************************************** - * @attention - * - * ʵƽ̨:ԭ H743 - * Ƶ:www.yuanzige.com - * ̳:www.openedv.com - * ˾ַ:www.alientek.com - * ַ:openedv.taobao.com - * - * ޸˵ - * V1.0 20230324 - * һη - * - **************************************************************************************************** - */ - -#include "string.h" -#include "./BSP/NAND/ftl.h" -#include "./MALLOC/malloc.h" -#include "./BSP/NAND/nand.h" -#include "./SYSTEM/usart/usart.h" - - -/** - * ÿ,һpagespare,ǰĸֽڵĺ: - * һֽ,ʾÿǷǻ:0XFF,;ֵ,. - * ڶֽ,ʾÿǷù:0XFF,ûд;0XCC,д. - * ͵ĸֽ,ʾÿ߼. - - * ÿpage,spare16ֽԺֽں: - * ʮֽڿʼ,ÿ4ֽڴ洢һ(С:NAND_ECC_SECTOR_SIZE)ECCֵ,ECCУ - */ - -/** - * @brief FTLʼ - * @param - * @retval 0,,ʧ - */ -uint8_t ftl_init(void) -{ - uint8_t temp; - - if (nand_init()) - { - return 1; /* ʼNAND FLASH */ - } - - if (nand_dev.lut) - { - myfree(SRAMIN, nand_dev.lut); - } - - nand_dev.lut = mymalloc(SRAMIN, (nand_dev.block_totalnum) * 2); /* LUTڴ */ - memset(nand_dev.lut, 0, nand_dev.block_totalnum * 2); /* ȫ */ - - if (!nand_dev.lut) - { - return 1; /* ڴʧ */ - } - - temp = ftl_create_lut(1); - - if (temp) - { - printf("format nand flash...\r\n"); - temp = ftl_format(); /* ʽNAND */ - - if (temp) - { - printf("format failed!\r\n"); - return 2; - } - } - else /* LUTɹ */ - { - printf("total block num: %d\r\n", nand_dev.block_totalnum); - printf("good block num: %d\r\n", nand_dev.good_blocknum); - printf("valid block num: %d\r\n", nand_dev.valid_blocknum); - } - - return 0; -} - -/** - * @brief ijһΪ - * @param blocknum : ,Χ:0~(block_totalnum-1) - * @retval - */ -void ftl_badblock_mark(uint32_t blocknum) -{ - uint32_t temp = 0XAAAAAAAA;/* mark,ֵOK,ֻҪ0XFF.дǰ4ֽ,ftl_find_unused_block黵.(鱸,ٶ) */ - nand_writespare(blocknum * nand_dev.block_pagenum, 0, (uint8_t *)&temp, 4); /* ڵһpagespare,һֽ(ǰ4ֽڶд) */ - nand_writespare(blocknum * nand_dev.block_pagenum + 1, 0, (uint8_t *)&temp, 4); /* ڵڶpagespare,һֽ(,ǰ4ֽڶд) */ -} - -/** - * @brief ijһǷǻ - * @param blocknum : ,Χ:0~(block_totalnum-1) - * @retval 0,ÿ; - * , - */ -uint8_t ftl_check_badblock(uint32_t blocknum) -{ - uint8_t flag = 0; - - nand_readspare(blocknum * nand_dev.block_pagenum, 0, &flag, 1); /* ȡ־ */ - - if (flag == 0XFF) /* ÿ?,ȡ */ - { - nand_readspare(blocknum * nand_dev.block_pagenum + 1, 0, &flag, 1); /* ȡ־ */ - - if (flag == 0XFF) - { - return 0; /* ÿ */ - } - - else return 1; /* */ - } - - return 2; -} - -/** - * @brief ijһѾʹ - * @param blocknum : ,Χ:0~(block_totalnum-1) - * @retval 0,ɹ; - * ,ʧ - */ -uint8_t ftl_used_blockmark(uint32_t blocknum) -{ - uint8_t buf[4]; - uint8_t temp = 0; - nand_readspare(blocknum * nand_dev.block_pagenum, 0, buf, 4); /* 4ֽ */ - - buf[1] = 0XCC; - temp = nand_writespare(blocknum * nand_dev.block_pagenum, 0, buf, 4); /* дѾʹñ־ */ - - return temp; -} - -/** - * @brief ӸĿ鿪ʼҵǰҵһδʹõĿ(ָ/ż) - * @param sblock : ʼ,Χ:0~(block_totalnum-1) - * @param flag : 0,ż; 1,. - * @retval 0XFFFFFFFF,ʧ; - * ֵ,δʹÿ - */ -uint32_t ftl_find_unused_block(uint32_t sblock, uint8_t flag) -{ - uint32_t temp = 0; - uint32_t blocknum = 0; - - for (blocknum = sblock + 1; blocknum > 0; blocknum--) - { - if (((blocknum - 1) % 2) == flag) /* żϸ,ż */ - { - nand_readspare((blocknum - 1) * nand_dev.block_pagenum, 0, (uint8_t *)&temp, 4); /* Ƿʹñ */ - - if (temp == 0XFFFFFFFF) - { - return (blocknum - 1); /* ҵһտ,ؿ */ - } - } - } - - return 0XFFFFFFFF; /* δҵ */ - -} - -/** - * @brief ͬһplaneڵδʹõĿ - * @param sblock : ,Χ:0~(block_totalnum-1) - * @retval 0XFFFFFFFF,ʧ; - * ֵ,δʹÿ - */ -uint32_t ftl_find_same_plane_unusedBlock(uint32_t sblock) -{ - static uint32_t curblock = 0XFFFFFFFF; - uint32_t unusedblock = 0; - - if (curblock > (nand_dev.block_totalnum - 1)) - { - curblock = nand_dev.block_totalnum - 1; /* Χ,ǿƴһ鿪ʼ */ - } - - unusedblock = ftl_find_unused_block(curblock, sblock % 2); /* ӵǰ,ʼ,ǰҿ */ - - if (unusedblock == 0XFFFFFFFF && curblock < (nand_dev.block_totalnum - 1)) /* δҵ,ҲǴĩβʼҵ */ - { - curblock = nand_dev.block_totalnum - 1; /* ǿƴһ鿪ʼ */ - unusedblock = ftl_find_unused_block(curblock, sblock % 2);/* ĩβʼ,һ */ - } - - if (unusedblock == 0XFFFFFFFF) - { - return 0XFFFFFFFF; /* Ҳblock */ - } - - curblock = unusedblock; /* ǰŵδʹÿ.´Ӵ˴ʼ */ - - return unusedblock; /* ҵĿblock */ -} - -/** - * @brief һݿһ,ҿд - * @param source_pagenum : Ҫдݵҳַ,Χ:0~(block_pagenum*block_totalnum-1) - * @param colnum : Ҫдпʼַ(Ҳҳڵַ),Χ:0~(page_totalsize-1) - * @param pbuffer : Ҫд - * @param numbytetowrite : ҪдֵֽܳʣС - * @retval 0,ɹ; - * ,ʧ - */ -uint8_t ftl_copy_and_write_to_block(uint32_t source_pagenum, uint16_t colnum, uint8_t *pbuffer, uint32_t numbytetowrite) -{ - uint16_t i = 0, temp = 0, wrlen; - uint32_t source_block = 0, pageoffset = 0; - uint32_t unusedblock = 0; - source_block = source_pagenum / nand_dev.block_pagenum; /* ҳڵĿ */ - pageoffset = source_pagenum % nand_dev.block_pagenum; /* ҳڿڵƫ */ - -retry: - unusedblock = ftl_find_same_plane_unusedBlock(source_block); /* Դһplaneδʹÿ */ - - if (unusedblock > nand_dev.block_totalnum) - { - return 1; /* ҵĿŴڿĻ϶dz */ - } - - for (i = 0; i < nand_dev.block_pagenum; i++) /* һݸƵҵδʹÿ */ - { - if (i >= pageoffset && numbytetowrite) /* Ҫд뵽ǰҳ */ - { - if (numbytetowrite > (nand_dev.page_mainsize - colnum)) /* Ҫд,˵ǰҳʣ */ - { - wrlen = nand_dev.page_mainsize - colnum; /* д볤ȵڵǰҳʣݳ */ - } - else - { - wrlen = numbytetowrite; /* дȫ */ - } - - temp = nand_copypage_withwrite(source_block * nand_dev.block_pagenum + i, unusedblock * nand_dev.block_pagenum + i, colnum, pbuffer, wrlen); - colnum = 0; /* еַ */ - pbuffer += wrlen; /* дַƫ */ - numbytetowrite -= wrlen; /* дݼ */ - } - - else /* д,ֱӿ */ - { - temp = nand_copypage_withoutwrite(source_block * nand_dev.block_pagenum + i, unusedblock * nand_dev.block_pagenum + i); - } - - if (temp) /* ֵ,鴦 */ - { - ftl_badblock_mark(unusedblock); /* Ϊ */ - ftl_create_lut(1); /* ؽLUT */ - goto retry; - } - } - - if (i == nand_dev.block_pagenum) /* */ - { - ftl_used_blockmark(unusedblock); /* ǿѾʹ */ - nand_eraseblock(source_block); /* Դ */ - - //printf("\r\ncopy block %d to block %d\r\n",source_block,unusedblock);/* ӡϢ */ - for (i = 0; i < nand_dev.block_totalnum; i++) /* LUTunusedblock滻source_block */ - { - if (nand_dev.lut[i] == source_block) - { - nand_dev.lut[i] = unusedblock; - break; - } - } - } - - return 0; /* ɹ */ -} - -/** - * @brief ߼תΪ - * @param lbnnum : ߼ - * @retval - */ -uint16_t ftl_lbn_to_pbn(uint32_t lbnnum) -{ - uint16_t PBNNo = 0; - - /* ߼ŴЧʱ򷵻0XFFFF */ - if (lbnnum > nand_dev.valid_blocknum) - { - return 0XFFFF; - } - - PBNNo = nand_dev.lut[lbnnum]; - - return PBNNo; -} - -/** - * @brief д(ֶ֧д)FATFSļϵͳʹ - * @param pbuffer : Ҫд - * @param sectorno : ʼ - * @param sectorsize : С(ܴNAND_ECC_SECTOR_SIZEĴС,!!) - * @param sectorcount : Ҫд - * @retval 0,ɹ; - * ,ʧ - */ -uint8_t ftl_write_sectors(uint8_t *pbuffer, uint32_t sectorno, uint16_t sectorsize, uint32_t sectorcount) -{ - uint8_t flag = 0; - uint16_t temp; - uint32_t i = 0; - uint16_t wsecs; /* дҳС */ - uint32_t wlen; /* д볤 */ - uint32_t LBNNo; /* ߼ */ - uint32_t PBNNo; /* */ - uint32_t PhyPageNo; /* ҳ */ - uint32_t PageOffset; /* ҳƫƵַ */ - uint32_t BlockOffset; /* ƫƵַ */ - uint32_t markdpbn = 0XFFFFFFFF; /* ˵ */ - - for (i = 0; i < sectorcount; i++) - { - LBNNo = (sectorno + i) / (nand_dev.block_pagenum * (nand_dev.page_mainsize / sectorsize)); /* ߼źС߼ */ - PBNNo = ftl_lbn_to_pbn(LBNNo); /* ߼תΪ */ - - if (PBNNo >= nand_dev.block_totalnum) - { - return 1; /* ŴNAND FLASHܿ,ʧ. */ - } - - BlockOffset = ((sectorno + i) % (nand_dev.block_pagenum * (nand_dev.page_mainsize / sectorsize))) * sectorsize; /* ƫ */ - PhyPageNo = PBNNo * nand_dev.block_pagenum + BlockOffset / nand_dev.page_mainsize; /* ҳ */ - PageOffset = BlockOffset % nand_dev.page_mainsize; /* ҳƫƵַ */ - temp = nand_dev.page_mainsize - PageOffset; /* pageʣֽ */ - temp /= sectorsize; /* дsector */ - wsecs = sectorcount - i; /* ʣٸsectorҪд */ - - if (wsecs >= temp) - { - wsecs = temp; /* ڿдsector,дtemp */ - } - - wlen = wsecs * sectorsize; /* ÿдwsecssector */ - - /* дСжǷȫΪ0XFF */ - flag = nand_readpagecomp(PhyPageNo, PageOffset, 0XFFFFFFFF, wlen / 4, &temp); /* һwlen/4С,0XFFFFFFFFԱ */ - - if (flag) - { - return 2; /* д󣬻 */ - } - - if (temp == (wlen / 4)) - { - flag = nand_writepage(PhyPageNo, PageOffset, pbuffer, wlen);/* ȫΪ0XFF,ֱд */ - } - else - { - flag = 1; /* ȫ0XFF, */ - } - - if (flag == 0 && (markdpbn != PBNNo)) /* ȫ0XFF,дɹ,ұ˵뵱ǰ鲻ͬ */ - { - flag = ftl_used_blockmark(PBNNo); /* Ǵ˿Ѿʹ */ - markdpbn = PBNNo; /* ,ǿ=ǰ,ֹظ */ - } - - if (flag) /* ȫΪ0XFF/ʧܣдһ */ - { - temp = ((uint32_t)nand_dev.block_pagenum * nand_dev.page_mainsize - BlockOffset) / sectorsize;/* blockʣ¶ٸSECTORд */ - wsecs = sectorcount - i; /* ʣٸsectorҪд */ - - if (wsecs >= temp) - { - wsecs = temp; /* ڿдsector,дtemp */ - } - - wlen = wsecs * sectorsize; /* ÿдwsecssector */ - flag = ftl_copy_and_write_to_block(PhyPageNo, PageOffset, pbuffer, wlen); /* һblock,д */ - - if (flag) - { - return 3; /* ʧ */ - } - } - - i += wsecs - 1; - pbuffer += wlen; /* ݻָƫ */ - } - - return 0; -} - -/** - * @brief (ֶ֧)FATFSļϵͳʹ - * @param pbuffer : ݻ - * @param sectorno : ʼ - * @param sectorsize : С - * @param sectorcount : Ҫд - * @retval 0,ɹ; - * ,ʧ - */ -uint8_t ftl_read_sectors(uint8_t *pbuffer, uint32_t sectorno, uint16_t sectorsize, uint32_t sectorcount) -{ - uint8_t flag = 0; - uint16_t rsecs; /* ζȡҳ */ - uint32_t i = 0; - uint32_t LBNNo; /* ߼ */ - uint32_t PBNNo; /* */ - uint32_t PhyPageNo; /* ҳ */ - uint32_t PageOffset; /* ҳƫƵַ */ - uint32_t BlockOffset; /* ƫƵַ */ - - for (i = 0; i < sectorcount; i++) - { - LBNNo = (sectorno + i) / (nand_dev.block_pagenum * (nand_dev.page_mainsize / sectorsize));/* ߼źС߼ */ - PBNNo = ftl_lbn_to_pbn(LBNNo); /* ߼תΪ */ - - if (PBNNo >= nand_dev.block_totalnum) - { - return 1; /* ŴNAND FLASHܿ,ʧ. */ - } - - BlockOffset = ((sectorno + i) % (nand_dev.block_pagenum * (nand_dev.page_mainsize / sectorsize))) * sectorsize; /* ƫ */ - PhyPageNo = PBNNo * nand_dev.block_pagenum + BlockOffset / nand_dev.page_mainsize; /* ҳ */ - PageOffset = BlockOffset % nand_dev.page_mainsize; /* ҳƫƵַ */ - rsecs = (nand_dev.page_mainsize - PageOffset) / sectorsize; /* һԶȡҳ */ - - if (rsecs > (sectorcount - i)) - { - rsecs = sectorcount - i; /* ಻ܳSectorCount-i */ - } - - flag = nand_readpage(PhyPageNo, PageOffset, pbuffer, rsecs * sectorsize); /* ȡ */ - - if (flag == NSTA_ECC1BITERR) /* 1bit ecc,Ϊ */ - { - flag = nand_readpage(PhyPageNo, PageOffset, pbuffer, rsecs * sectorsize); /* ض,ٴȷ */ - - if (flag == NSTA_ECC1BITERR) - { - ftl_copy_and_write_to_block(PhyPageNo, PageOffset, pbuffer, rsecs * sectorsize); /* */ - flag = ftl_blockcompare(PhyPageNo / nand_dev.block_pagenum, 0XFFFFFFFF); /* ȫ1,ȷǷΪ */ - - if (flag == 0) - { - flag = ftl_blockcompare(PhyPageNo / nand_dev.block_pagenum, 0X00); /* ȫ0,ȷǷΪ */ - nand_eraseblock(PhyPageNo / nand_dev.block_pagenum); /* ɺ, */ - } - - if (flag) /* ȫ0/ȫ1,϶ǻ. */ - { - ftl_badblock_mark(PhyPageNo / nand_dev.block_pagenum); /* Ϊ */ - ftl_create_lut(1); /* ؽLUT */ - } - - flag = 0; - } - } - - if (flag == NSTA_ECC2BITERR) - { - flag = 0; /* 2bit ecc,(dzдݵµ) */ - } - - if (flag) - { - return 2; /* ʧ */ - } - - pbuffer += sectorsize * rsecs; /* ݻָƫ */ - i += rsecs - 1; - } - - return 0; -} - -/** - * @brief ´LUT - * @param mode : 0, һ - * 1, ǶҪ(ҲҪ) - * @retval 0,ɹ; - * ,ʧ - */ -uint8_t ftl_create_lut(uint8_t mode) -{ - uint32_t i; - uint8_t buf[4]; - uint32_t LBNnum = 0; /* ߼ */ - - for (i = 0; i < nand_dev.block_totalnum; i++) /* λLUTʼΪЧֵҲ0XFFFF */ - { - nand_dev.lut[i] = 0XFFFF; - } - - nand_dev.good_blocknum = 0; - - for (i = 0; i < nand_dev.block_totalnum; i++) - { - nand_readspare(i * nand_dev.block_pagenum, 0, buf, 4); /* ȡ4ֽ */ - - if (buf[0] == 0XFF && mode) - { - nand_readspare(i * nand_dev.block_pagenum + 1, 0, buf, 1); /* ÿ,Ҫ2λ */ - } - - if (buf[0] == 0XFF) /* Ǻÿ */ - { - LBNnum = ((uint16_t)buf[3] << 8) + buf[2]; /* õ߼ */ - - if (LBNnum < nand_dev.block_totalnum) /* ߼ſ϶СܵĿ */ - { - nand_dev.lut[LBNnum] = i; /* LUTдLBNnumӦ */ - } - - nand_dev.good_blocknum++; - } - else - { - printf("bad block index:%d\r\n", i); - } - } - - /* LUTԺЧ */ - for (i = 0; i < nand_dev.block_totalnum; i++) - { - if (nand_dev.lut[i] >= nand_dev.block_totalnum) - { - nand_dev.valid_blocknum = i; - break; - } - } - - if (nand_dev.valid_blocknum < 100) - { - return 2; /* ЧС100,.Ҫ¸ʽ */ - } - - return 0; /* LUT */ -} - -/** - * @brief FTLBlockijݶԱ - * @param blockx : block - * @param cmpval : Ҫ֮Աȵֵ - * @retval 0,ɹ,ȫ; - 1,ʧ,вȵ - */ -uint8_t ftl_blockcompare(uint32_t blockx, uint32_t cmpval) -{ - uint8_t res; - uint16_t i, j, k; - - for (i = 0; i < 3; i++) /* 3λ */ - { - for (j = 0; j < nand_dev.block_pagenum; j++) - { - nand_readpagecomp(blockx * nand_dev.block_pagenum, 0, cmpval, nand_dev.page_mainsize / 4, &k);/* һpage,0XFFFFFFFFԱ */ - - if (k != (nand_dev.page_mainsize / 4))break; - } - - if (j == nand_dev.block_pagenum) - { - return 0; /* ϸ,ֱ˳ */ - } - - res = nand_eraseblock(blockx); - - if (res) - { - printf("error erase block:%d\r\n", i); - } - else - { - if (cmpval != 0XFFFFFFFF) /* жȫ1,Ҫд */ - { - for (k = 0; k < nand_dev.block_pagenum; k++) - { - nand_write_pageconst(blockx * nand_dev.block_pagenum + k, 0, 0, nand_dev.page_mainsize / 4);/* дPAGE */ - } - } - } - } - - printf("bad block checked:%d\r\n", blockx); - return 1; -} - -/** - * @brief FTLʼʱѰл,ʹ:-д- ʽ - * @note 512MNAND ,ҪԼ3ʱ,ɼ - * RGB,ƵдNAND,Ļ - * @param - * @retval ÿ - */ -uint32_t ftl_search_badblock(void) -{ - uint8_t *blktbl; - uint8_t res; - uint32_t i, j; - uint32_t goodblock = 0; - - blktbl = mymalloc(SRAMIN, nand_dev.block_totalnum); /* blockڴ,Ӧ:0,ÿ;1,; */ - nand_erasechip(); /* ȫƬ */ - - for (i = 0; i < nand_dev.block_totalnum; i++) /* һ׶μ,ȫ1 */ - { - res = ftl_blockcompare(i, 0XFFFFFFFF); /* ȫ1 */ - - if (res) - { - blktbl[i] = 1; /* */ - } - else - { - blktbl[i] = 0;/* ÿ */ - - for (j = 0; j < nand_dev.block_pagenum; j++)/* дblockΪȫ0,Ϊļ׼ */ - { - nand_write_pageconst(i * nand_dev.block_pagenum + j, 0, 0, nand_dev.page_mainsize / 4); - } - } - } - - for (i = 0; i < nand_dev.block_totalnum; i++) /* ڶ׶μ,ȫ0 */ - { - if (blktbl[i] == 0) /* ڵһ׶,ûбǻ,ſǺÿ */ - { - res = ftl_blockcompare(i, 0); /* ȫ0 */ - - if (res) - { - blktbl[i] = 1; /* ǻ */ - } - else - { - goodblock++; - } - } - } - - nand_erasechip(); /* ȫƬ */ - - for (i = 0; i < nand_dev.block_totalnum; i++) /* ׶μ,ǻ */ - { - if (blktbl[i]) - { - ftl_badblock_mark(i); /* ǻ */ - } - } - - return goodblock; /* غÿ */ -} - -/** - * @brief ʽNAND ؽLUT - * @param - * @retval 0,ɹ; - ,ʧ - */ -uint8_t ftl_format(void) -{ - uint8_t temp; - uint8_t buf[6]; - uint32_t i, n; - uint32_t goodblock = 0; - nand_dev.good_blocknum = 0; - -#if FTL_USE_BAD_BLOCK_SEARCH == 1 /* ʹò-д-ķʽ,⻵ */ - nand_dev.good_blocknum = FTL_SearchBadBlock(); /* Ѱ.ʱܾ */ -#else /* ֱʹNAND FLASHij־(,ĬǺÿ) */ - - for (i = 0; i < nand_dev.block_totalnum; i++) - { - temp = ftl_check_badblock(i); /* һǷΪ */ - - if (temp == 0) /* ÿ */ - { - temp = nand_eraseblock(i); - - if (temp) /* ʧ,Ϊ */ - { - printf("Bad block:%d\r\n", i); - ftl_badblock_mark(i); /* ǻ */ - } - else - { - nand_dev.good_blocknum++; /* ÿһ */ - } - } - } - -#endif - printf("good_blocknum:%d\r\n", nand_dev.good_blocknum); - - if (nand_dev.good_blocknum < 100) - { - return 1; /*ÿ100NAND Flash */ - } - - goodblock = (nand_dev.good_blocknum * 93) / 100;/* %93ĺÿڴ洢 */ - - n = 0; - - for (i = 0; i < nand_dev.block_totalnum; i++) /* ںÿб߼Ϣ */ - { - temp = ftl_check_badblock(i); /* һǷΪ */ - - if (temp == 0) /* ÿ */ - { - nand_readspare(i * nand_dev.block_pagenum, 0, buf, 4); /* ȡspareǰĸֽ */ - buf[2] = (uint8_t)n; - buf[3] = (uint8_t)(n >> 8); - - nand_writespare(i * nand_dev.block_pagenum, 0, buf, 4); /* д߼ */ - n++; /* ߼ż1 */ - - if (n == goodblock) break; /* ȫ */ - } - } - - if (ftl_create_lut(1)) - { - return 2; /* ؽLUTʧ */ - } - - return 0; -} - - - - - - - - - - diff --git a/Core/Core/Src/ftl.h b/Core/Core/Src/ftl.h deleted file mode 100644 index 60e59a3..0000000 --- a/Core/Core/Src/ftl.h +++ /dev/null @@ -1,53 +0,0 @@ -/** - **************************************************************************************************** - * @file ftl.h - * @author ԭŶ(ALIENTEK) - * @version V1.0 - * @date 2022-09-06 - * @brief NAND FLASH FTL㷨 - * @license Copyright (c) 2020-2032, ӿƼ޹˾ - **************************************************************************************************** - * @attention - * - * ʵƽ̨:ԭ H743 - * Ƶ:www.yuanzige.com - * ̳:www.openedv.com - * ˾ַ:www.alientek.com - * ַ:openedv.taobao.com - * - * ޸˵ - * V1.0 20220906 - * һη - * - **************************************************************************************************** - */ - -#ifndef __FTL_H -#define __FTL_H - -#include "./SYSTEM/sys/sys.h" - - -/* */ -/* Ϊ1,ftl_formatʱ,Ѱ,ʱ(512M,3),һᵼRGB */ -#define FTL_USE_BAD_BLOCK_SEARCH 0 /* Ƿʹû */ - -/******************************************************************************************/ - -uint8_t ftl_init(void); -void ftl_badblock_mark(uint32_t blocknum); -uint8_t ftl_check_badblock(uint32_t blocknum); -uint8_t ftl_used_blockmark(uint32_t blocknum); -uint32_t ftl_find_unused_block(uint32_t sblock, uint8_t flag); -uint32_t ftl_find_same_plane_unused_block(uint32_t sblock); -uint8_t ftl_copy_and_write_to_block(uint32_t source_pagenum, uint16_t colnum, uint8_t *pbuffer, uint32_t numbyte_to_write); -uint16_t ftl_lbn_to_pbn(uint32_t lbnnum); -uint8_t ftl_write_sectors(uint8_t *pbuffer, uint32_t sectorno, uint16_t sectorsize, uint32_t sectorcount); -uint8_t ftl_read_sectors(uint8_t *pbuffer, uint32_t sectorno, uint16_t sectorsize, uint32_t sectorcount); -uint8_t ftl_create_lut(uint8_t mode); -uint8_t ftl_blockcompare(uint32_t blockx, uint32_t cmpval); -uint32_t ftl_search_badblock(void); -uint8_t ftl_format(void); - -#endif - diff --git a/Core/Core/Src/gpio.c b/Core/Core/Src/gpio.c index ba624b6..e7fcaa0 100644 --- a/Core/Core/Src/gpio.c +++ b/Core/Core/Src/gpio.c @@ -49,9 +49,7 @@ void MX_GPIO_Init(void) __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOG_CLK_ENABLE(); /*Configure GPIO pin Output Level */ diff --git a/Core/Core/Src/main.c b/Core/Core/Src/main.c index 27ba6f2..df1e775 100644 --- a/Core/Core/Src/main.c +++ b/Core/Core/Src/main.c @@ -24,7 +24,6 @@ #include "memorymap.h" #include "usart.h" #include "gpio.h" -#include "fmc.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ @@ -35,15 +34,6 @@ /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ -extern NAND_HandleTypeDef hnand1; - -#define NAND_PAGE_SIZE 2048 // ??????(??) -#define NAND_OOB_SIZE 64 // OOB ??(??) -#define NAND_BLOCK_SIZE 64 // ?? 64 ?(???) - -// ????????(????,???? SRAM3 ? DTCM) -__attribute__((aligned(4))) uint8_t nand_write_buffer[NAND_PAGE_SIZE]; -__attribute__((aligned(4))) uint8_t nand_read_buffer[NAND_PAGE_SIZE + NAND_OOB_SIZE]; /* USER CODE END PTD */ @@ -75,6 +65,7 @@ void MX_FREERTOS_Init(void); /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ + /* USER CODE END 0 */ /** @@ -128,6 +119,13 @@ int main(void) g_Init(); Os_Init(); + /* USER CODE BEGIN 2 */ + + + + + + /* USER CODE END 2 */ /* Call init function for freertos objects (in cmsis_os2.c) */ diff --git a/Core/Core/Src/nand.c b/Core/Core/Src/nand.c deleted file mode 100644 index 198d47c..0000000 --- a/Core/Core/Src/nand.c +++ /dev/null @@ -1,962 +0,0 @@ -/** - **************************************************************************************************** - * @file nand.c - * @author ԭŶ(ALIENTEK) - * @version V1.0 - * @date 2022-09-06 - * @brief NAND FLASH - * @license Copyright (c) 2020-2032, ӿƼ޹˾ - **************************************************************************************************** - * @attention - * - * ʵƽ̨:ԭ H743 - * Ƶ:www.yuanzige.com - * ̳:www.openedv.com - * ˾ַ:www.alientek.com - * ַ:openedv.taobao.com - * - * ޸˵ - * V1.0 20220906 - * һη - * - **************************************************************************************************** - */ - -#include -#include "nand.h" - - - -NAND_HandleTypeDef g_nand_handle; /* NAND FLASH */ -nand_attriute nand_dev; /* nandҪṹ */ - -/** - * @brief ʼNAND FLASH - * @param - * @retval - */ -uint8_t nand_init(void) -{ - FMC_NAND_PCC_TimingTypeDef comspacetiming, attspacetiming; - - g_nand_handle.Instance = FMC_NAND_DEVICE; - g_nand_handle.Init.NandBank = FMC_NAND_BANK3; /* NANDBANK3 */ - g_nand_handle.Init.Waitfeature = FMC_NAND_PCC_WAIT_FEATURE_DISABLE; /* رյȴ */ - g_nand_handle.Init.MemoryDataWidth = FMC_NAND_PCC_MEM_BUS_WIDTH_8; /* 8λݿ */ - g_nand_handle.Init.EccComputation = FMC_NAND_ECC_DISABLE; /* ʹECC */ - g_nand_handle.Init.ECCPageSize = FMC_NAND_ECC_PAGE_SIZE_512BYTE; /* ECCҳСΪ512ֽ */ - g_nand_handle.Init.TCLRSetupTime = 8; /* TCLR(tCLR=CLEREʱ)=(TCLR+SET+2)*THCLK,THCLK=1/220M=4.5ns */ - g_nand_handle.Init.TARSetupTime = 8; /* TAR(tAR=ALEREʱ)=(TAR+SET+1)*THCLK,THCLK=1/220M=4.5ns */ - - comspacetiming.SetupTime = 4; /* ʱ */ - comspacetiming.WaitSetupTime = 6; /* ȴʱ */ - comspacetiming.HoldSetupTime = 2; /* ʱ */ - comspacetiming.HiZSetupTime = 3; /* ̬ʱ */ - - attspacetiming.SetupTime = 4; /* ʱ */ - attspacetiming.WaitSetupTime = 6; /* ȴʱ */ - attspacetiming.HoldSetupTime = 2; /* ʱ */ - attspacetiming.HiZSetupTime = 3; /* ̬ʱ */ - - HAL_NAND_Init(&g_nand_handle, &comspacetiming, &attspacetiming); - nand_reset(); /* λNAND */ - delay_ms(100); - nand_dev.id = nand_readid(); /* ȡID */ - nand_modeset(4); /* ΪMODE4,ģʽ */ - - if (nand_dev.id == MT29F16G08ABABA) /* NANDΪMT29F16G08ABABA */ - { - nand_dev.page_totalsize = 4320; /* nandһpageܴСspare */ - nand_dev.page_mainsize = 4096; /* nandһpageЧС */ - nand_dev.page_sparesize = 224; /* nandһpagespareС */ - nand_dev.block_pagenum = 128; /* nandһblockpageĿ */ - nand_dev.plane_blocknum = 2048; /* nandһplaneblockĿ */ - nand_dev.block_totalnum = 4096; /* nandblockĿ */ - } - else if (nand_dev.id == MT29F4G08ABADA) /* NANDΪMT29F4G08ABADA */ - { - nand_dev.page_totalsize = 2112; /* nandһpageܴСspare */ - nand_dev.page_mainsize = 2048; /* nandһpageЧС */ - nand_dev.page_sparesize = 64; /* nandһpagespareС */ - nand_dev.block_pagenum = 64; /* nandһblockpageĿ */ - nand_dev.plane_blocknum = 2048; /* nandһplaneblockĿ */ - nand_dev.block_totalnum = 4096; /* nandblockĿ */ - } - else if (nand_dev.id == FSNS8B004G) /* NANDΪHSENSD04ATIG */ - { - nand_dev.page_totalsize = 4160; /* nandһpageܴСspare */ - nand_dev.page_mainsize = 4096; /* nandһpageЧС */ - nand_dev.page_sparesize = 64; /* nandһpagespareС */ - nand_dev.block_pagenum = 64; /* nandһblockpageĿ */ - nand_dev.plane_blocknum = 1024; /* nandһplaneblockĿ */ - nand_dev.block_totalnum = 2048; /* nandblockĿ */ - } - else return 1; /* 󣬷 */ - - return 0; -} - -/** - * @brief NAND FALSHײ,ãʱʹ - * @note ˺ᱻHAL_nand_init() - * @param - * @retval - */ -void HAL_NAND_MspInit(NAND_HandleTypeDef *hnand) -{ - GPIO_InitTypeDef gpio_init_struct; - - __HAL_RCC_FMC_CLK_ENABLE(); /* ʹFMCʱ */ - __HAL_RCC_GPIOC_CLK_ENABLE(); /* ʹGPIOCʱ */ - __HAL_RCC_GPIOD_CLK_ENABLE(); /* ʹGPIODʱ */ - __HAL_RCC_GPIOE_CLK_ENABLE(); /* ʹGPIOEʱ */ - __HAL_RCC_GPIOG_CLK_ENABLE(); /* ʹGPIOGʱ */ - - - - gpio_init_struct.Pin = GPIO_PIN_6; - gpio_init_struct.Mode = GPIO_MODE_INPUT; /* */ - gpio_init_struct.Pull = GPIO_PULLUP; /* */ - gpio_init_struct.Speed = GPIO_SPEED_HIGH; /* */ - HAL_GPIO_Init(GPIOC, &gpio_init_struct); - - gpio_init_struct.Pin = GPIO_PIN_8; - gpio_init_struct.Mode = GPIO_MODE_AF_PP; /* */ - gpio_init_struct.Pull = GPIO_NOPULL; /* */ - gpio_init_struct.Speed = GPIO_SPEED_HIGH; /* */ - gpio_init_struct.Alternate = GPIO_AF9_FMC; /* ΪFMC */ - HAL_GPIO_Init(GPIOC, &gpio_init_struct); - - gpio_init_struct.Alternate = GPIO_AF12_FMC; /* ΪFMC */ - /* ʼPD0,1,4,5,11,12,14,15 */ - gpio_init_struct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | \ - GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_14 | GPIO_PIN_15; - gpio_init_struct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOD, &gpio_init_struct); - - /* ʼPE7,8,9,10*/ - gpio_init_struct.Pin = GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10; - HAL_GPIO_Init(GPIOE, &gpio_init_struct); -} - -/** - * @brief NANDٶģʽ - * @param mode : 0~5, ʾٶģʽ - * @retval 0,ɹ; ,ʧ - */ -uint8_t nand_modeset(uint8_t mode) -{ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_FEATURE; /* */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = 0X01; /* ַΪ0X01,mode */ - *(__IO uint8_t *)NAND_ADDRESS = mode; /* P1,mode */ - *(__IO uint8_t *)NAND_ADDRESS = 0; - *(__IO uint8_t *)NAND_ADDRESS = 0; - *(__IO uint8_t *)NAND_ADDRESS = 0; - - if (nand_wait_for_ready() == NSTA_READY) - { - return 0; /* ɹ */ - } - else return 1; /* ʧ */ -} - -/** - * @brief ȡNAND FLASHID - * @note ͬNANDвͬԼʹõNAND FALSHֲд - * @param - * @retval NAND FLASHIDֵ - */ -uint32_t nand_readid(void) -{ - uint8_t deviceid[5]; - uint32_t id; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = nand_readID; /* ͶȡID */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = 0X00; - - /* IDһ5ֽ */ - deviceid[0] = *(__IO uint8_t *)NAND_ADDRESS; - deviceid[1] = *(__IO uint8_t *)NAND_ADDRESS; - deviceid[2] = *(__IO uint8_t *)NAND_ADDRESS; - deviceid[3] = *(__IO uint8_t *)NAND_ADDRESS; - deviceid[4] = *(__IO uint8_t *)NAND_ADDRESS; - - /* þNAND FLASHIDһ5ֽڣΪ˷ֻȡ4ֽһ32λIDֵ - NAND FLASHֲᣬֻҪþNAND FLASHôһֽIDĵһֽڶ0X2C - ǾͿ0X2CֻȡֽڵIDֵ*/ - id = ((uint32_t)deviceid[1]) << 24 | ((uint32_t)deviceid[2]) << 16 | ((uint32_t)deviceid[3]) << 8 | deviceid[4]; - - return id; -} - -/** - * @brief NAND״̬ - * @param - * @retval NAND״ֵ̬ - * bit0:0,ɹ; 1,(//READ) - * bit6:0,Busy; 1,Ready - */ -uint8_t nand_readstatus(void) -{ - __IO uint8_t data = 0; - - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_READSTA; /* Ͷ״̬ */ - nand_delay(NAND_TWHR_DELAY); /* ȴtWHR,ٶȡ״̬Ĵ */ - data = *(__IO uint8_t *)NAND_ADDRESS; /* ȡ״ֵ̬ */ - - return data; -} - -/** - * @brief ȴNAND׼ - * @param - * @retval NSTA_TIMEOUT ȴʱ - * NSTA_READY Ѿ׼ - */ -uint8_t nand_wait_for_ready(void) -{ - uint8_t status = 0; - __IO uint32_t time = 0; - - while (1) /* ȴready */ - { - status = nand_readstatus(); /* ȡ״ֵ̬ */ - - if (status & NSTA_READY)break; - - time++; - - if (time >= 0X1FFFFFFF) - { - return NSTA_TIMEOUT; /* ʱ */ - } - } - - return NSTA_READY; /* ׼ */ -} - -/** - * @brief λNAND - * @param - * @retval 0,ɹ; ,ʧ - */ -uint8_t nand_reset(void) -{ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_RESET; /* λNAND */ - - if (nand_wait_for_ready() == NSTA_READY) - { - return 0; /* λɹ */ - } - else return 1; /* λʧ */ -} - -/** - * @brief ȴRBźΪijƽ - * @param rb : 0,ȴRB==0; - * 1,ȴRB==1; - * @retval 0,ɹ; 1,ʱ - */ -uint8_t nand_waitrb(__IO uint8_t rb) -{ - __IO uint32_t time = 0; - __IO uint8_t cnt = 0; - - while (time < 0X1FFFFFF) - { - time++; - - if (NAND_RB == rb) - { - cnt++; - } - else - { - cnt = 0; - } - - if (cnt > 2) - { - return 0; /* ζȡȷЧƽ,Ϊ˴Ч!(-O2Ż!) */ - } - } - - return 1; -} - -/** - * @brief NANDʱ - * @note һi++Ҫ4ns - * @param i : ȴʱ - * @retval - */ -void nand_delay(__IO uint32_t i) -{ - while (i > 0) - { - i--; - } -} - -/** - * @brief ȡNAND Flashָҳָе(mainspareʹô˺) - * @param pagenum : Ҫȡҳַ,Χ:0~(block_pagenum*block_totalnum-1) - * @param colnum : Ҫȡпʼַ(Ҳҳڵַ),Χ:0~(page_totalsize-1) - * @param *pbuffer : ָݴ洢 - * @param numbytetoread : ȡֽ(ܿҳ) - * @retval 0,ɹ; , - */ -uint8_t nand_readpage(uint32_t pagenum, uint16_t colnum, uint8_t *pbuffer, uint16_t numbytetoread) -{ - __IO uint16_t i = 0; - uint8_t res = 0; - uint8_t eccnum = 0; /* ҪECCÿNAND_ECC_SECTOR_SIZEֽڼһecc */ - uint8_t eccstart = 0; /* һECCֵĵַΧ */ - uint8_t errsta = 0; - uint8_t *p; - - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_AREA_A; - /* ͵ַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)colnum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(colnum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)pagenum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(pagenum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(pagenum >> 16); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_AREA_TRUE1; - - /** - * дǵȴR/BűΪ͵ƽʵҪʱõģȴNANDR/BšΪͨ - * STM32NWAIT(NANDR/B)ΪͨIOͨȡNWAITŵĵƽжNANDǷ׼ - * ġҲģķٶȺܿʱпNANDûüR/BʾNANDæ - * ״̬ǾͶȡR/B,ʱ϶ģʵȷʵǻ!ҲԽ - * 뻻ʱ,ֻΪЧûʱ - */ - res = nand_waitrb(0); /* ȴRB=0 */ - - if (res) - { - return NSTA_TIMEOUT; /* ʱ˳ */ - } - - /* 2джNANDǷ׼õ */ - res = nand_waitrb(1); /* ȴRB=1 */ - - if (res) - { - return NSTA_TIMEOUT; /* ʱ˳ */ - } - - if (numbytetoread % NAND_ECC_SECTOR_SIZE) /* NAND_ECC_SECTOR_SIZEECCУ */ - { - /* ȡNAND FLASHеֵ */ - for (i = 0; i < numbytetoread; i++) - { - *(__IO uint8_t *)pbuffer++ = *(__IO uint8_t *)NAND_ADDRESS; - } - } - else - { - eccnum = numbytetoread / NAND_ECC_SECTOR_SIZE; /* õecc */ - eccstart = colnum / NAND_ECC_SECTOR_SIZE; - p = pbuffer; - - for (res = 0; res < eccnum; res++) - { - FMC_Bank3_R->PCR |= 1 << 6; /* ʹECCУ */ - - for (i = 0; i < NAND_ECC_SECTOR_SIZE; i++) /* ȡNAND_ECC_SECTOR_SIZE */ - { - *(__IO uint8_t *)pbuffer++ = *(__IO uint8_t *)NAND_ADDRESS; - } - - while (!(FMC_Bank3_R -> SR & (1 << 6))); /* ȴFIFO */ - - SCB_CleanInvalidateDCache(); /* ЧD-Cache */ - nand_dev.ecc_hdbuf[res + eccstart] = FMC_Bank3_R -> ECCR; /* ȡӲECCֵ */ - FMC_Bank3_R -> PCR &= ~(1 << 6); /* ֹECCУ */ - } - - i = nand_dev.page_mainsize + 0X10 + eccstart * 4; /* spare0X10λÿʼȡ֮ǰ洢eccֵ */ - nand_delay(NAND_TRHW_DELAY); /* ȴtRHW */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = 0X05; /* ָ */ - /* ͵ַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)i; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(i >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = 0XE0; /* ʼ */ - - nand_delay(NAND_TWHR_DELAY); /* ȴtWHR */ - pbuffer = (uint8_t *)&nand_dev.ecc_rdbuf[eccstart]; - - for (i = 0; i < 4 * eccnum; i++) /* ȡECCֵ */ - { - *(__IO uint8_t *)pbuffer++ = *(__IO uint8_t *)NAND_ADDRESS; - } - - for (i = 0; i < eccnum; i++) /* ECC */ - { - if (nand_dev.ecc_rdbuf[i + eccstart] != nand_dev.ecc_hdbuf[i + eccstart]) /* ,ҪУ */ - { - printf("err hd,rd:0x%x,0x%x\r\n", nand_dev.ecc_hdbuf[i + eccstart], nand_dev.ecc_rdbuf[i + eccstart]); - printf("eccnum,eccstart:%d,%d\r\n", eccnum, eccstart); - printf("PageNum,ColNum:%d,%d\r\n", pagenum, colnum); - res = nand_ecc_correction(p + NAND_ECC_SECTOR_SIZE * i, nand_dev.ecc_rdbuf[i + eccstart], nand_dev.ecc_hdbuf[i + eccstart]);/* ECCУ */ - - if (res) - { - errsta = NSTA_ECC2BITERR; /* 2BITECC */ - } - else - { - errsta = NSTA_ECC1BITERR; /* 1BIT ECC */ - } - } - } - } - - if (nand_wait_for_ready() != NSTA_READY) - { - errsta = NSTA_ERROR; /* ʧ */ - } - - return errsta; /* ɹ */ -} - -/** - * @brief ȡNAND Flashָҳָе(mainspareʹô˺),Ա(FTLʱҪ) - * @param pagenum : Ҫȡҳַ,Χ:0~(block_pagenum*block_totalnum-1) - * @param colnum : Ҫȡпʼַ(Ҳҳڵַ),Χ:0~(page_totalsize-1) - * @param cmpval : ҪԱȵֵ,uint32_tΪλ - * @param numbytetoread : ȡ(4ֽΪλ,ܿҳ) - * @param numbyteequal : ӳʼλóCmpValֵͬݸ - * @retval 0,ɹ; , - */ -uint8_t nand_readpagecomp(uint32_t pagenum, uint16_t colnum, uint32_t cmpval, uint16_t numbytetoread, uint16_t *numbyteequal) -{ - uint16_t i = 0; - uint8_t res = 0; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_AREA_A; - /* ͵ַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)colnum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(colnum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)pagenum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(pagenum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(pagenum >> 16); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_AREA_TRUE1; - - /** - * дǵȴR/BűΪ͵ƽʵҪʱõģȴNANDR/BšΪͨ - * STM32NWAIT(NANDR/B)ΪͨIOͨȡNWAITŵĵƽжNANDǷ׼ - * ġҲģķٶȺܿʱпNANDûüR/BʾNANDæ - * ״̬ǾͶȡR/B,ʱ϶ģʵȷʵǻ!ҲԽ - * 뻻ʱ,ֻΪЧûʱ - */ - res = nand_waitrb(0); /* ȴRB=0 */ - - if (res) - { - return NSTA_TIMEOUT; /* ʱ˳ */ - } - - /* 2джNANDǷ׼õ */ - res = nand_waitrb(1); /* ȴRB=1 */ - - if (res) - { - return NSTA_TIMEOUT; /* ʱ˳ */ - } - - for (i = 0; i < numbytetoread; i++) /* ȡ,ÿζ4ֽ */ - { - if (*(__IO uint32_t *)NAND_ADDRESS != cmpval)break; /* κһֵ,CmpVal,˳. */ - } - - *numbyteequal = i; /* CmpValֵͬĸ */ - - if (nand_wait_for_ready() != NSTA_READY) - { - return NSTA_ERROR; /* ʧ */ - } - - return 0; /* ɹ */ -} - -/** - * @brief NANDһҳдָֽڵ(mainspareʹô˺) - * @param pagenum : Ҫдҳַ,Χ:0~(block_pagenum*block_totalnum-1) - * @param colnum : Ҫдпʼַ(Ҳҳڵַ),Χ:0~(page_totalsize-1) - * @param pbuffer : ָݴ洢 - * @param numbytetowrite : Ҫдֵֽܳҳʣֽ - * @retval 0,ɹ; , - */ -uint8_t nand_writepage(uint32_t pagenum, uint16_t colnum, uint8_t *pbuffer, uint16_t numbytetowrite) -{ - __IO uint16_t i = 0; - uint8_t res = 0; - uint8_t eccnum = 0; /* ҪECCÿNAND_ECC_SECTOR_SIZEֽڼһecc */ - uint8_t eccstart = 0; /* һECCֵĵַΧ */ - - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_WRITE0; - /* ͵ַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)colnum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(colnum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)pagenum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(pagenum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(pagenum >> 16); - nand_delay(NAND_TADL_DELAY); /* ȴtADL */ - - if (numbytetowrite % NAND_ECC_SECTOR_SIZE) /* NAND_ECC_SECTOR_SIZEECCУ */ - { - for (i = 0; i < numbytetowrite; i++) /* д */ - { - *(__IO uint8_t *)NAND_ADDRESS = *(__IO uint8_t *)pbuffer++; - } - } - else - { - eccnum = numbytetowrite / NAND_ECC_SECTOR_SIZE; /* õecc */ - eccstart = colnum / NAND_ECC_SECTOR_SIZE; - - for (res = 0; res < eccnum; res++) - { - FMC_Bank3_R -> PCR |= 1 << 6; /* ʹECCУ */ - - for (i = 0; i < NAND_ECC_SECTOR_SIZE; i++) /* дNAND_ECC_SECTOR_SIZE */ - { - *(__IO uint8_t *)NAND_ADDRESS = *(__IO uint8_t *)pbuffer++; - } - - while (!(FMC_Bank3_R -> SR & (1 << 6))); /* ȴFIFO */ - - SCB_CleanInvalidateDCache(); /* ЧD-Cache */ - nand_dev.ecc_hdbuf[res + eccstart] = FMC_Bank3_R -> ECCR; /* ȡӲECCֵ */ - - FMC_Bank3_R -> PCR &= ~(1 << 6); /* ֹECCУ */ - } - - i = nand_dev.page_mainsize + 0X10 + eccstart * 4; /*дECCspareַ */ - nand_delay(NAND_TADL_DELAY); /* ȴtADL */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = 0X85; /* дָ */ - - /* ͵ַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)i; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(i >> 8); - nand_delay(NAND_TADL_DELAY); /* ȴtADL */ - pbuffer = (uint8_t *)&nand_dev.ecc_hdbuf[eccstart]; - - for (i = 0; i < eccnum; i++) /* дECC */ - { - for (res = 0; res < 4; res++) - { - *(__IO uint8_t *)NAND_ADDRESS = *(__IO uint8_t *)pbuffer++; - } - } - } - - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_WRITE_TURE1; - delay_us(NAND_TPROG_DELAY); /* ȴtPROG */ - - if (nand_wait_for_ready() != NSTA_READY) - { - return NSTA_ERROR; /* ʧ */ - } - - return 0; /* ɹ */ -} - -/** - * @brief NANDһҳеַָʼ,дָȵĺ㶨 - * @param pagenum : Ҫдҳַ,Χ:0~(block_pagenum*block_totalnum-1) - * @param colnum : Ҫдпʼַ(Ҳҳڵַ),Χ:0~(page_totalsize-1) - * @param cval : Ҫдָ - * @param numbytetowrite : Ҫдֽ(4ֽΪλ) - * @retval 0,ɹ; , - */ -uint8_t nand_write_pageconst(uint32_t pagenum, uint16_t colnum, uint32_t cval, uint16_t numbytetowrite) -{ - uint16_t i = 0; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_WRITE0; - /* ͵ַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)colnum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(colnum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)pagenum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(pagenum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(pagenum >> 16); - - nand_delay(NAND_TADL_DELAY); /* ȴtADL */ - - for (i = 0; i < numbytetowrite; i++) /* д,ÿд4ֽ */ - { - *(__IO uint32_t *)NAND_ADDRESS = cval; - } - - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_WRITE_TURE1; - delay_us(NAND_TPROG_DELAY); /* ȴtPROG */ - - if (nand_wait_for_ready() != NSTA_READY) - { - return NSTA_ERROR; /* ʧ */ - } - - return 0; /* ɹ */ -} - -/** - * @brief һҳݿһҳ,д - * @note ԴҳĿҳҪͬһPlaneڣ - * @param source_pagenum : Դҳַ,Χ:0~(block_pagenum*block_totalnum-1) - * @param dest_pagenum : Ŀҳַ,Χ:0~(block_pagenum*block_totalnum-1) - * @retval 0,ɹ; , - */ -uint8_t nand_copypage_withoutwrite(uint32_t source_pagenum, uint32_t dest_pagenum) -{ - uint8_t res = 0; - uint16_t source_block = 0, dest_block = 0; - /* жԴҳĿҳǷͬһplane */ - source_block = source_pagenum / nand_dev.block_pagenum; - dest_block = dest_pagenum / nand_dev.block_pagenum; - - if ((source_block % 2) != (dest_block % 2)) - { - return NSTA_ERROR; /* ͬһplane */ - } - - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_MOVEDATA_CMD0; /* 0X00 */ - /* Դҳַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)0; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)0; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)source_pagenum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(source_pagenum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(source_pagenum >> 16); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_MOVEDATA_CMD1; /* 0X35 */ - /** - * дǵȴR/BűΪ͵ƽʵҪʱõģȴNANDR/BšΪͨ - * STM32NWAIT(NANDR/B)ΪͨIOͨȡNWAITŵĵƽжNANDǷ׼ - * ġҲģķٶȺܿʱпNANDûüR/BʾNANDæ - * ״̬ǾͶȡR/B,ʱ϶ģʵȷʵǻ!ҲԽ - * 뻻ʱ,ֻΪЧûʱ - */ - res = nand_waitrb(0); /* ȴRB=0 */ - - if (res) - { - return NSTA_TIMEOUT; /* ʱ˳ */ - } - - /* 2джNANDǷ׼õ */ - res = nand_waitrb(1); /* ȴRB=1 */ - - if (res) - { - return NSTA_TIMEOUT; /* ʱ˳ */ - } - - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_MOVEDATA_CMD2; /* 0X85 */ - /* Ŀҳַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)0; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)0; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)dest_pagenum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(dest_pagenum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(dest_pagenum >> 16); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_MOVEDATA_CMD3; /* 0X10 */ - delay_us(NAND_TPROG_DELAY); /* ȴtPROG */ - - if (nand_wait_for_ready() != NSTA_READY) - { - return NSTA_ERROR; /* NANDδ׼ */ - } - - return 0; /* ɹ */ -} - -/** - * @brief һҳݿһҳ,ҿд - * @note ԴҳĿҳҪͬһPlaneڣ - * @param source_pagenum : Դҳַ,Χ:0~(block_pagenum*block_totalnum-1) - * @param dest_pagenum : Ŀҳַ,Χ:0~(block_pagenum*block_totalnum-1) - * @param colnum : ҳеַ,Χ:0~(page_totalsize-1) - * @param pbuffer : Ҫд - * @param numbytetowrite : Ҫдݸ - * @retval 0,ɹ; , - */ -uint8_t nand_copypage_withwrite(uint32_t source_pagenum, uint32_t dest_pagenum, uint16_t colnum, uint8_t *pbuffer, uint16_t numbytetowrite) -{ - uint8_t res = 0; - __IO uint16_t i = 0; - uint16_t source_block = 0, dest_block = 0; - uint8_t eccnum = 0; /* ҪECCÿNAND_ECC_SECTOR_SIZEֽڼһecc */ - uint8_t eccstart = 0; /* һECCֵĵַΧ */ - /* жԴҳĿҳǷͬһplane */ - source_block = source_pagenum / nand_dev.block_pagenum; - dest_block = dest_pagenum / nand_dev.block_pagenum; - - if ((source_block % 2) != (dest_block % 2)) - { - return NSTA_ERROR; /* ͬһplane */ - } - - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_MOVEDATA_CMD0; /* 0X00 */ - /* Դҳַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)0; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)0; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)source_pagenum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(source_pagenum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(source_pagenum >> 16); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_MOVEDATA_CMD1; /* 0X35 */ - - /** - * дǵȴR/BűΪ͵ƽʵҪʱõģȴNANDR/BšΪͨ - * STM32NWAIT(NANDR/B)ΪͨIOͨȡNWAITŵĵƽжNANDǷ׼ - * ġҲģķٶȺܿʱпNANDûüR/BʾNANDæ - * ״̬ǾͶȡR/B,ʱ϶ģʵȷʵǻ!ҲԽ - * 뻻ʱ,ֻΪЧûʱ - */ - res = nand_waitrb(0); /* ȴRB=0 */ - - if (res) - { - return NSTA_TIMEOUT; /* ʱ˳ */ - } - - /* 2джNANDǷ׼õ */ - res = nand_waitrb(1); /* ȴRB=1 */ - - if (res) - { - return NSTA_TIMEOUT; /* ʱ˳ */ - } - - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_MOVEDATA_CMD2; /* 0X85 */ - /* Ŀҳַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)colnum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(colnum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)dest_pagenum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(dest_pagenum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(dest_pagenum >> 16); - /* ҳеַ */ - nand_delay(NAND_TADL_DELAY); /* ȴtADL */ - - if (numbytetowrite % NAND_ECC_SECTOR_SIZE) /* NAND_ECC_SECTOR_SIZEECCУ */ - { - for (i = 0; i < numbytetowrite; i++) /* д */ - { - *(__IO uint8_t *)NAND_ADDRESS = *(__IO uint8_t *)pbuffer++; - } - } - else - { - eccnum = numbytetowrite / NAND_ECC_SECTOR_SIZE; /* õecc */ - eccstart = colnum / NAND_ECC_SECTOR_SIZE; - - for (res = 0; res < eccnum; res++) - { - FMC_Bank3_R -> PCR |= 1 << 6; /* ʹECCУ */ - - for (i = 0; i < NAND_ECC_SECTOR_SIZE; i++) /* дNAND_ECC_SECTOR_SIZE */ - { - *(__IO uint8_t *)NAND_ADDRESS = *(__IO uint8_t *)pbuffer++; - } - - while (!(FMC_Bank3_R -> SR & (1 << 6))); /* ȴFIFO */ - - SCB_CleanInvalidateDCache(); /* ЧD-Cache */ - nand_dev.ecc_hdbuf[res + eccstart] = FMC_Bank3_R -> ECCR; /* ȡӲECCֵ */ - - FMC_Bank3_R -> PCR &= ~(1 << 6); /* ֹECCУ */ - } - - i = nand_dev.page_mainsize + 0X10 + eccstart * 4; /* дECCspareַ */ - nand_delay(NAND_TADL_DELAY); /* ȴtADL */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = 0X85; /* дָ */ - /* ͵ַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)i; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(i >> 8); - nand_delay(NAND_TADL_DELAY); /* ȴtADL */ - - pbuffer = (uint8_t *)&nand_dev.ecc_hdbuf[eccstart]; - - for (i = 0; i < eccnum; i++) /* дECC */ - { - for (res = 0; res < 4; res++) - { - *(__IO uint8_t *)NAND_ADDRESS = *(__IO uint8_t *)pbuffer++; - } - } - } - - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_MOVEDATA_CMD3; /* 0X10 */ - delay_us(NAND_TPROG_DELAY); /* ȴtPROG */ - - if (nand_wait_for_ready() != NSTA_READY) - { - return NSTA_ERROR; /* ʧ */ - } - - return 0; /* ɹ */ -} - -/** - * @brief ȡspareе - * @param pagenum : Ҫдҳַ,Χ:0~(block_pagenum*block_totalnum-1) - * @param colnum : Ҫдspareַ(spareĸַ),Χ:0~(page_sparesize-1) - * @param pbuffer : ݻ - * @param numbytetoread : Ҫȡֽ(page_sparesize) - * @retval 0,ɹ; , - */ -uint8_t nand_readspare(uint32_t pagenum, uint16_t colnum, uint8_t *pbuffer, uint16_t numbytetoread) -{ - uint8_t temp = 0; - uint8_t remainbyte = 0; - remainbyte = nand_dev.page_sparesize - colnum; - - if (numbytetoread > remainbyte) - { - numbytetoread = remainbyte; /* ȷҪдֽspareʣĴС */ - } - - temp = nand_readpage(pagenum, colnum + nand_dev.page_mainsize, pbuffer, numbytetoread); /* ȡ */ - return temp; -} - -/** - * @brief spareд - * @param pagenum : Ҫдҳַ,Χ:0~(block_pagenum*block_totalnum-1) - * @param colnum : Ҫдspareַ(spareĸַ),Χ:0~(page_sparesize-1) - * @param pbuffer : Ҫд׵ַ - * @param numbytetowrite : Ҫдֽ(page_sparesize) - * @retval 0,ɹ; ,ʧ - */ -uint8_t nand_writespare(uint32_t pagenum, uint16_t colnum, uint8_t *pbuffer, uint16_t numbytetowrite) -{ - uint8_t temp = 0; - uint8_t remainbyte = 0; - - remainbyte = nand_dev.page_sparesize - colnum; - - if (numbytetowrite > remainbyte) - { - numbytetowrite = remainbyte; /* ȷҪȡֽspareʣĴС */ - } - - temp = nand_writepage(pagenum, colnum + nand_dev.page_mainsize, pbuffer, numbytetowrite); /* ȡ */ - - return temp; -} - -/** - * @brief һ - * @param blocknum : ҪBLOCK,Χ:0-(block_totalnum-1) - * @retval 0,ɹ; ,ʧ - */ -uint8_t nand_eraseblock(uint32_t blocknum) -{ - if (nand_dev.id == MT29F16G08ABABA) - { - blocknum <<= 7; /* ַתΪҳַ */ - } - else if (nand_dev.id == MT29F4G08ABADA) - { - blocknum <<= 6; - } - else if (nand_dev.id == FSNS8B004G) - { - blocknum <<= 6; - } - - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_ERASE0; - /* Ϳַ */ - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)blocknum; - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(blocknum >> 8); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_ADDR) = (uint8_t)(blocknum >> 16); - *(__IO uint8_t *)(NAND_ADDRESS | NAND_CMD) = NAND_ERASE1; - - delay_ms(NAND_TBERS_DELAY); /* ȴɹ */ - - if (nand_wait_for_ready() != NSTA_READY) - { - return NSTA_ERROR; /* ʧ */ - } - - return 0; /* ɹ */ -} - -/** - * @brief ȫƬNAND FLASH - * @param - * @retval - */ -void nand_erasechip(void) -{ - uint8_t status; - uint16_t i = 0; - - for (i = 0; i < nand_dev.block_totalnum; i++) /* ѭеĿ */ - { - status = nand_eraseblock(i); - - if (status) - { - printf("Erase %d block fail!!Ϊ%d\r\n", i, status); /* ʧ */ - } - } -} - -/** - * @brief ȡECCλ/żλ - * @param oe : 0,żλ; 1,λ - * @param eccval : eccֵ - * @retval eccֵ(16λ) - */ -uint16_t nand_ecc_get_oe(uint8_t oe, uint32_t eccval) -{ - uint8_t i; - uint16_t ecctemp = 0; - - for (i = 0; i < 24; i++) - { - if ((i % 2) == oe) - { - if ((eccval >> i) & 0X01) - { - ecctemp += 1 << (i >> 1); - } - } - } - - return ecctemp; -} - -/** - * @brief ECCУ - * @param data_buf : ݻ - * @param eccrd : ȡ, ԭECCֵ - * @param ecccl : ȡʱ, ӲECCֵ - * @retval 0,; ,ECC(д2bitĴ,޷ָ) - */ -uint8_t nand_ecc_correction(uint8_t *data_buf, uint32_t eccrd, uint32_t ecccl) -{ - uint16_t eccrdo, eccrde, eccclo, ecccle; - uint16_t eccchk = 0; - uint16_t errorpos = 0; - uint32_t bytepos = 0; - eccrdo = nand_ecc_get_oe(1, eccrd); /* ȡeccrdλ */ - eccrde = nand_ecc_get_oe(0, eccrd); /* ȡeccrdżλ */ - eccclo = nand_ecc_get_oe(1, ecccl); /* ȡeccclλ */ - ecccle = nand_ecc_get_oe(0, ecccl); /* ȡeccclżλ */ - eccchk = eccrdo ^ eccrde ^ eccclo ^ ecccle; - - if (eccchk == 0XFFF) /* ȫ1,˵ֻ1bit ECC */ - { - errorpos = eccrdo ^ eccclo; - printf("errorpos:%d\r\n", errorpos); - bytepos = errorpos / 8; - data_buf[bytepos] ^= 1 << (errorpos % 8); - } - else /* ȫ1,˵2bit ECC,޷޸ */ - { - printf("2bit ecc error or more\r\n"); - return 1; - } - - return 0; -} - - diff --git a/Core/Core/Src/nand.h b/Core/Core/Src/nand.h deleted file mode 100644 index 4765581..0000000 --- a/Core/Core/Src/nand.h +++ /dev/null @@ -1,137 +0,0 @@ -/** - **************************************************************************************************** - * @file nand.h - * @author ԭŶ(ALIENTEK) - * @version V1.0 - * @date 2022-09-06 - * @brief NAND FLASH - * @license Copyright (c) 2020-2032, ӿƼ޹˾ - **************************************************************************************************** - * @attention - * - * ʵƽ̨:ԭ H743 - * Ƶ:www.yuanzige.com - * ̳:www.openedv.com - * ˾ַ:www.alientek.com - * ַ:openedv.taobao.com - * - * ޸˵ - * V1.0 20220906 - * һη - * - **************************************************************************************************** - */ - -#ifndef _NAND_H -#define _NAND_H - -#include "global.h" - -/******************************************************************************************/ - -/* */ -#define NAND_RB_GPIO_PORT GPIOD -#define NAND_RB_GPIO_PIN GPIO_PIN_6 -#define NAND_RB_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOD_CLK_ENABLE(); }while(0) /* PDʱʹ */ - -/******************************************************************************************/ - -/* IO */ -#define NAND_RB HAL_GPIO_ReadPin(NAND_RB_GPIO_PORT, NAND_RB_GPIO_PIN) /* NAND Flash/æ */ - -#define NAND_MAX_PAGE_SIZE 4096 /* NAND FLASHPAGEСSPAREĬ4096ֽ */ -#define NAND_ECC_SECTOR_SIZE 512 /* ִECCĵԪСĬ512ֽ */ - - -/* NAND FLASHʱ */ -#define NAND_TADL_DELAY 30 /* tADLȴӳ,70ns */ -#define NAND_TWHR_DELAY 25 /* tWHRȴӳ,60ns */ -#define NAND_TRHW_DELAY 35 /* tRHWȴӳ,100ns */ -#define NAND_TPROG_DELAY 200 /* tPROGȴӳ,ֵ200us,Ҫ700us */ -#define NAND_TBERS_DELAY 4 /* tBERSȴӳ,ֵ3.5ms,Ҫ10ms */ - - -/* NANDԽṹ */ -typedef struct -{ - uint16_t page_totalsize; /* ÿҳܴСmainspareܺ */ - uint16_t page_mainsize; /* ÿҳmainС */ - uint16_t page_sparesize; /* ÿҳspareС */ - uint8_t block_pagenum; /* ÿҳ */ - uint16_t plane_blocknum; /* ÿplaneĿ */ - uint16_t block_totalnum; /* ܵĿ */ - uint16_t good_blocknum; /* ÿ */ - uint16_t valid_blocknum; /* Ч(ļϵͳʹõĺÿ) */ - uint32_t id; /* NAND FLAS*(vu8*)(0X80000000|(1<<17))=CMD*(vu8*)(0X80000000|(1<<17))=CMDH ID */ - uint16_t *lut; /* LUT߼-ת */ - uint32_t ecc_hard; /* ӲECCֵ */ - uint32_t ecc_hdbuf[NAND_MAX_PAGE_SIZE / NAND_ECC_SECTOR_SIZE]; /* ECCӲֵ */ - uint32_t ecc_rdbuf[NAND_MAX_PAGE_SIZE / NAND_ECC_SECTOR_SIZE]; /* ECCȡֵ */ -}nand_attriute; - -extern nand_attriute nand_dev; /* nandҪṹ */ - - - -#define NAND_ADDRESS 0X80000000 /* nand flashķʵַ,NCE3,ַΪ:0X8000 0000 */ -#define NAND_CMD 1 << 16 /* */ -#define NAND_ADDR 1 << 17 /* ͵ַ */ - -/* NAND FLASH */ -#define nand_readID 0X90 /* IDָ */ -#define NAND_FEATURE 0XEF /* ָ */ -#define NAND_RESET 0XFF /* λNAND */ -#define NAND_READSTA 0X70 /* ״̬ */ -#define NAND_AREA_A 0X00 -#define NAND_AREA_TRUE1 0X30 -#define NAND_WRITE0 0X80 -#define NAND_WRITE_TURE1 0X10 -#define NAND_ERASE0 0X60 -#define NAND_ERASE1 0XD0 -#define NAND_MOVEDATA_CMD0 0X00 -#define NAND_MOVEDATA_CMD1 0X35 -#define NAND_MOVEDATA_CMD2 0X85 -#define NAND_MOVEDATA_CMD3 0X10 - -/* NAND FLASH״̬ */ -#define NSTA_READY 0X40 /* nandѾ׼ */ -#define NSTA_ERROR 0X01 /* nand */ -#define NSTA_TIMEOUT 0X02 /* ʱ */ -#define NSTA_ECC1BITERR 0X03 /* ECC 1bit */ -#define NSTA_ECC2BITERR 0X04 /* ECC 2bitϴ */ - - -/* NAND FLASHͺźͶӦID */ -#define MT29F4G08ABADA 0XDC909556 /* MT29F4G08ABADA */ -#define MT29F16G08ABABA 0X48002689 /* MT29F16G08ABABA */ -#define FSNS8B004G 0XDC00A262 /* FSNS8B004G */ - -/******************************************************************************************/ - -uint8_t nand_init(void); -uint8_t nand_modeset(uint8_t mode); -void nand_mpu_config(void); -uint32_t nand_readid(void); -uint8_t nand_readstatus(void); -uint8_t nand_wait_for_ready(void); -uint8_t nand_reset(void); -uint8_t nand_waitrb(volatile uint8_t rb); -void nand_delay(volatile uint32_t i); -uint8_t nand_readpage(uint32_t pagenum, uint16_t colnum, uint8_t *pbuffer, uint16_t numbyte_to_read); -uint8_t nand_readpagecomp(uint32_t pagenum, uint16_t colnum, uint32_t cmpval, uint16_t numbyte_to_read, uint16_t *numbyte_equal); -uint8_t nand_writepage(uint32_t pagenum, uint16_t colnum, uint8_t *pbuffer, uint16_t numbyte_to_write); -uint8_t nand_write_pageconst(uint32_t pagenum, uint16_t colnum, uint32_t cval, uint16_t numbyte_to_write); -uint8_t nand_copypage_withoutwrite(uint32_t source_pagenum, uint32_t dest_pagenum); -uint8_t nand_copypage_withwrite(uint32_t source_pagenum, uint32_t dest_pagenum, uint16_t colnum, uint8_t *pbuffer, uint16_t numbyte_to_write); -uint8_t nand_readspare(uint32_t pagenum, uint16_t colnum, uint8_t *pbuffer, uint16_t numbyte_to_read); -uint8_t nand_writespare(uint32_t pagenum, uint16_t colnum, uint8_t *pbuffer, uint16_t numbyte_to_write); -uint8_t nand_eraseblock(uint32_t blocknum); -void nand_erasechip(void); - -uint16_t nand_ecc_get_oe(uint8_t oe, uint32_t eccval); -uint8_t nand_ecc_correction(uint8_t *data_buf, uint32_t eccrd, uint32_t ecccl); - -#endif - - - diff --git a/Core/Core/Src/nandtester.c b/Core/Core/Src/nandtester.c deleted file mode 100644 index e13a921..0000000 --- a/Core/Core/Src/nandtester.c +++ /dev/null @@ -1,239 +0,0 @@ -/** - **************************************************************************************************** - * @file nandtester.c - * @author ԭŶ(ALIENTEK) - * @version V1.0 - * @date 2022-09-06 - * @brief NAND FLASH USMARTԴ - * @license Copyright (c) 2020-2032, ӿƼ޹˾ - **************************************************************************************************** - * @attention - * - * ʵƽ̨:ԭ H743 - * Ƶ:www.yuanzige.com - * ̳:www.openedv.com - * ˾ַ:www.alientek.com - * ַ:openedv.taobao.com - * - * ޸˵ - * V1.0 20220906 - * һη - * - **************************************************************************************************** - */ - -#include "string.h" -#include "./BSP/NAND/ftl.h" -#include "./BSP/NAND/nand.h" -#include "./MALLOC/malloc.h" -#include "./SYSTEM/usart/usart.h" -#include "./BSP/NAND/nandtester.h" - - -/** - * @brief NANDijһҳдָС - * @param pagenum:Ҫдҳַ - * @param colnum:ҪдĿʼеַ(ҳڵַ) - * @param writebytes:ҪдݴСMT29F16GΪ4320MT29F4GΪ2112 - * @retval 0,ɹ,ȫ;1,ʧ,вȵ - */ -uint8_t test_writepage(uint32_t pagenum, uint16_t colnum, uint16_t writebytes) -{ - uint8_t *pbuf; - uint8_t sta = 0; - uint16_t i = 0; - pbuf = mymalloc(SRAMIN, 5000); - - for (i = 0; i < writebytes; i++) /* ׼Ҫд,,0ʼ */ - { - pbuf[i] = i; - } - - sta = nand_writepage(pagenum, colnum, pbuf, writebytes); /* nandд */ - myfree(SRAMIN, pbuf); /* ͷڴ */ - - return sta; -} - -/** - * @brief ȡNANDijһҳָС - * @param pagenum : Ҫȡҳַ - * @param colnum : ҪȡĿʼеַ(ҳڵַ) - * @param readbytes : ҪȡݴСMT29F16GΪ4320MT29F4GΪ2112 - * @retval - */ -uint8_t test_readpage(uint32_t pagenum, uint16_t colnum, uint16_t readbytes) -{ - uint8_t *pbuf; - uint8_t sta = 0; - uint16_t i = 0; - - pbuf = mymalloc(SRAMIN, 5000); - sta = nand_readpage(pagenum, colnum, pbuf, readbytes); /* ȡ */ - - if (sta == 0 || sta == NSTA_ECC1BITERR || sta == NSTA_ECC2BITERR) /* ȡɹ */ - { - printf("read page data is:\r\n"); - - for (i = 0; i < readbytes; i++) - { - printf("%x ", pbuf[i]); /* ڴӡȡ */ - } - printf("\r\nend\r\n"); - } - - myfree(SRAMIN, pbuf); /* ͷڴ */ - - return sta; -} - -/** - * @brief һҳݿһҳ,дһ. - * @note ԴҳĿҳҪͬһPlaneڣ(ͬΪ/ͬΪż) - * @param spnum : Դҳַ - * @param epnum : Ŀҳַ - * @param colnum : ҪдĿʼеַ(ҳڵַ) - * @param writebytes : ҪдݴСܳҳС - * @retval - */ -uint8_t test_copypageandwrite(uint32_t spnum, uint32_t dpnum, uint16_t colnum, uint16_t writebytes) -{ - uint8_t *pbuf; - uint8_t sta = 0; - uint16_t i = 0; - pbuf = mymalloc(SRAMIN, 5000); - - for (i = 0; i < writebytes; i++) /* ׼Ҫд,,0X80ʼ */ - { - pbuf[i] = i + 0X80; - } - - sta = nand_copypage_withwrite(spnum, dpnum, colnum, pbuf, writebytes); /* nandд */ - myfree(SRAMIN, pbuf); /* ͷڴ */ - - return sta; -} - -/** - * @brief ȡNANDijһҳSpareָС - * @param pagenum : Ҫȡҳַ - * @param colnum : Ҫȡspareʼַ - * @param readbytes : ҪȡݴСMT29F16GΪ64MT29F4GΪ224 - * @retval - */ -uint8_t test_readspare(uint32_t pagenum, uint16_t colnum, uint16_t readbytes) -{ - uint8_t *pbuf; - uint8_t sta = 0; - uint16_t i = 0; - pbuf = mymalloc(SRAMIN, 512); - sta = nand_readspare(pagenum, colnum, pbuf, readbytes); /* ȡ */ - - if (sta == 0) /* ȡɹ */ - { - printf("read spare data is:\r\n"); - - for (i = 0; i < readbytes; i++) - { - printf("%x ", pbuf[i]); /* ڴӡȡ */ - } - - printf("\r\nend\r\n"); - } - - myfree(SRAMIN, pbuf); /* ͷڴ */ - - return sta; -} - -/** - * @brief ָλÿʼ,ȡNAND,ÿBLOCKĵһpageǰ5ֽ - * @param sblock : ָʼblock - * @retval - */ -void test_readallblockinfo(uint32_t sblock) -{ - uint8_t j = 0; - uint32_t i = 0; - uint8_t sta; - uint8_t buffer[5]; - - for (i = sblock; i < nand_dev.block_totalnum; i++) - { - printf("block %d info:", i); - sta = nand_readspare(i * nand_dev.block_pagenum, 0, buffer, 5); /* ȡÿblock,һpageǰ5ֽ */ - - if (sta) - { - printf("failed\r\n"); - } - for (j = 0; j < 5; j++) - { - printf("%x ", buffer[j]); - } - printf("\r\n"); - } -} - -/******************************************************************************************/ -/* FTLԴ */ - -/** - * @brief ijʼ,дseccnt - * @param secx : ʼ - * @param secsize : С - * @param seccnt : Ҫд - * @retval - */ -uint8_t test_ftlwritesectors(uint32_t secx, uint16_t secsize, uint16_t seccnt) -{ - uint8_t *pbuf; - uint8_t sta = 0; - uint32_t i = 0; - pbuf = mymalloc(SRAMIN, secsize * seccnt); - - for (i = 0; i < secsize * seccnt; i++) /* ׼Ҫд,,0ʼ */ - { - pbuf[i] = i; - } - - sta = ftl_write_sectors(pbuf, secx, secsize, seccnt); /* nandд */ - - myfree(SRAMIN, pbuf); /* ͷڴ */ - - return sta; -} - -/** - * @brief ijʼ,seccnt - * @param secx : ʼ - * @param secsize : С - * @param seccnt : Ҫȡ - * @retval - */ -uint8_t test_ftlreadsectors(uint32_t secx, uint16_t secsize, uint16_t seccnt) -{ - uint8_t *pbuf; - uint8_t sta = 0; - uint32_t i = 0; - - pbuf = mymalloc(SRAMIN, secsize * seccnt); - sta = ftl_read_sectors(pbuf, secx, secsize, seccnt); /* ȡ */ - - if (sta == 0) - { - printf("read sec %d data is:\r\n", secx); - - for (i = 0; i < secsize * seccnt; i++) /* ׼Ҫд,,0ʼ */ - { - printf("%x ",pbuf[i]); /* ڴӡȡ */ - } - - printf("\r\nend\r\n"); - } - - myfree(SRAMIN, pbuf); /* ͷڴ */ - - return sta; -} - diff --git a/Core/Core/Src/nandtester.h b/Core/Core/Src/nandtester.h deleted file mode 100644 index 9d06b06..0000000 --- a/Core/Core/Src/nandtester.h +++ /dev/null @@ -1,40 +0,0 @@ -/** - **************************************************************************************************** - * @file nandtester.h - * @author ԭŶ(ALIENTEK) - * @version V1.0 - * @date 2022-09-06 - * @brief NAND FLASH USMARTԴ - * @license Copyright (c) 2020-2032, ӿƼ޹˾ - **************************************************************************************************** - * @attention - * - * ʵƽ̨:ԭ H743 - * Ƶ:www.yuanzige.com - * ̳:www.openedv.com - * ˾ַ:www.alientek.com - * ַ:openedv.taobao.com - * - * ޸˵ - * V1.0 20220906 - * һη - * - **************************************************************************************************** - */ - -#ifndef __NANDTESTER_H -#define __NANDTESTER_H - -#include "./SYSTEM/sys/sys.h" - -/******************************************************************************************/ - -uint8_t test_writepage(uint32_t pagenum, uint16_t colnum, uint16_t writebytes); -uint8_t test_readpage(uint32_t pagenum, uint16_t colnum, uint16_t readbytes); -uint8_t test_copypageandwrite(uint32_t spnum, uint32_t dpnum, uint16_t colnum, uint16_t writebytes); -uint8_t test_readspare(uint32_t pagenum, uint16_t colnum, uint16_t readbytes); -void test_readallblockinfo(uint32_t sblock); -uint8_t test_ftlwritesectors(uint32_t secx, uint16_t secsize, uint16_t seccnt); -uint8_t test_ftlreadsectors(uint32_t secx, uint16_t secsize, uint16_t seccnt); - -#endif diff --git a/Core/IPort.ioc b/Core/IPort.ioc index aaf8064..378cd94 100644 --- a/Core/IPort.ioc +++ b/Core/IPort.ioc @@ -65,24 +65,6 @@ ETH.IPParameters=MediaInterface,TxDescAddress,RxDescAddress ETH.MediaInterface=HAL_ETH_RMII_MODE ETH.RxDescAddress=0x30040000 ETH.TxDescAddress=0x30040060 -FMC.AttributeSpaceHiZSetupTime1=9 -FMC.AttributeSpaceHoldSetupTime1=10 -FMC.AttributeSpaceSetupTime1=9 -FMC.AttributeSpaceWaitSetupTime1=9 -FMC.CommonSpaceHiZSetupTime1=9 -FMC.CommonSpaceHoldSetupTime1=10 -FMC.CommonSpaceSetupTime1=9 -FMC.CommonSpaceWaitSetupTime1=9 -FMC.ECCPageSize1=FMC_NAND_ECC_PAGE_SIZE_512BYTE -FMC.IPParameters=TCLRSetupTime1,TARSetupTime1,ECCPageSize1,CommonSpaceSetupTime1,CommonSpaceWaitSetupTime1,CommonSpaceHoldSetupTime1,CommonSpaceHiZSetupTime1,AttributeSpaceSetupTime1,AttributeSpaceWaitSetupTime1,AttributeSpaceHoldSetupTime1,AttributeSpaceHiZSetupTime1,NandPageSize1,NandSpareAreaSize1,NandBlockSize1,NandBlockNbr1,NandPlaneNbr1,NandPlaneSize1 -FMC.NandBlockNbr1=2048 -FMC.NandBlockSize1=64 -FMC.NandPageSize1=2048 -FMC.NandPlaneNbr1=2 -FMC.NandPlaneSize1=4096 -FMC.NandSpareAreaSize1=64 -FMC.TARSetupTime1=9 -FMC.TCLRSetupTime1=9 FREERTOS.INCLUDE_uxTaskGetStackHighWaterMark=1 FREERTOS.INCLUDE_vTaskDelayUntil=1 FREERTOS.IPParameters=Tasks01,configENABLE_FPU,configUSE_COUNTING_SEMAPHORES,configTOTAL_HEAP_SIZE,configUSE_TICK_HOOK,configUSE_MALLOC_FAILED_HOOK,configGENERATE_RUN_TIME_STATS,configUSE_TRACE_FACILITY,configUSE_STATS_FORMATTING_FUNCTIONS,INCLUDE_vTaskDelayUntil,INCLUDE_uxTaskGetStackHighWaterMark,configMINIMAL_STACK_SIZE @@ -134,66 +116,51 @@ Mcu.CPN=STM32H743IIT6 Mcu.Family=STM32H7 Mcu.IP0=CORTEX_M7 Mcu.IP1=DEBUG -Mcu.IP10=SYS -Mcu.IP11=USART1 -Mcu.IP12=USART3 -Mcu.IP13=USART6 +Mcu.IP10=USART1 +Mcu.IP11=USART3 +Mcu.IP12=USART6 Mcu.IP2=DMA Mcu.IP3=ETH -Mcu.IP4=FMC -Mcu.IP5=FREERTOS -Mcu.IP6=LWIP -Mcu.IP7=MEMORYMAP -Mcu.IP8=NVIC -Mcu.IP9=RCC -Mcu.IPNb=14 +Mcu.IP4=FREERTOS +Mcu.IP5=LWIP +Mcu.IP6=MEMORYMAP +Mcu.IP7=NVIC +Mcu.IP8=RCC +Mcu.IP9=SYS +Mcu.IPNb=13 Mcu.Name=STM32H743IITx Mcu.Package=LQFP176 Mcu.Pin0=PC14-OSC32_IN (OSC32_IN) Mcu.Pin1=PC15-OSC32_OUT (OSC32_OUT) Mcu.Pin10=PC4 Mcu.Pin11=PC5 -Mcu.Pin12=PE7 -Mcu.Pin13=PE8 -Mcu.Pin14=PE9 -Mcu.Pin15=PE10 -Mcu.Pin16=PB10 -Mcu.Pin17=PB11 -Mcu.Pin18=PH12 -Mcu.Pin19=PB12 +Mcu.Pin12=PB10 +Mcu.Pin13=PB11 +Mcu.Pin14=PH12 +Mcu.Pin15=PB12 +Mcu.Pin16=PB13 +Mcu.Pin17=PB14 +Mcu.Pin18=PB15 +Mcu.Pin19=PA13 (JTMS/SWDIO) Mcu.Pin2=PH0-OSC_IN (PH0) -Mcu.Pin20=PB13 -Mcu.Pin21=PB14 -Mcu.Pin22=PB15 -Mcu.Pin23=PD11 -Mcu.Pin24=PD12 -Mcu.Pin25=PD14 -Mcu.Pin26=PD15 -Mcu.Pin27=PC6 -Mcu.Pin28=PC8 -Mcu.Pin29=PA13 (JTMS/SWDIO) +Mcu.Pin20=PA14 (JTCK/SWCLK) +Mcu.Pin21=PC10 +Mcu.Pin22=PC11 +Mcu.Pin23=PC12 +Mcu.Pin24=PG9 +Mcu.Pin25=PG14 +Mcu.Pin26=VP_FREERTOS_VS_CMSIS_V1 +Mcu.Pin27=VP_LWIP_VS_Enabled +Mcu.Pin28=VP_SYS_VS_tim7 +Mcu.Pin29=VP_MEMORYMAP_VS_MEMORYMAP Mcu.Pin3=PH1-OSC_OUT (PH1) -Mcu.Pin30=PA14 (JTCK/SWCLK) -Mcu.Pin31=PC10 -Mcu.Pin32=PC11 -Mcu.Pin33=PC12 -Mcu.Pin34=PD0 -Mcu.Pin35=PD1 -Mcu.Pin36=PD4 -Mcu.Pin37=PD5 -Mcu.Pin38=PG9 -Mcu.Pin39=PG14 Mcu.Pin4=PC1 -Mcu.Pin40=VP_FREERTOS_VS_CMSIS_V1 -Mcu.Pin41=VP_LWIP_VS_Enabled -Mcu.Pin42=VP_SYS_VS_tim7 -Mcu.Pin43=VP_MEMORYMAP_VS_MEMORYMAP Mcu.Pin5=PA1 Mcu.Pin6=PA2 Mcu.Pin7=PH4 Mcu.Pin8=PH5 Mcu.Pin9=PA7 -Mcu.PinsNb=44 +Mcu.PinsNb=30 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32H743IITx @@ -298,21 +265,6 @@ PC5.GPIOParameters=GPIO_Speed PC5.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH PC5.Mode=RMII PC5.Signal=ETH_RXD1 -PC6.Signal=FMC_NWAIT -PC8.Mode=NandChipSelect3_1 -PC8.Signal=FMC_NCE -PD0.Signal=FMC_D2_DA2 -PD1.Signal=FMC_D3_DA3 -PD11.Signal=FMC_A16_CLE -PD12.Signal=FMC_A17_ALE -PD14.Signal=FMC_D0_DA0 -PD15.Signal=FMC_D1_DA1 -PD4.Signal=FMC_NOE -PD5.Signal=FMC_NWE -PE10.Signal=FMC_D7_DA7 -PE7.Signal=FMC_D4_DA4 -PE8.Signal=FMC_D5_DA5 -PE9.Signal=FMC_D6_DA6 PG14.Locked=true PG14.Mode=Asynchronous PG14.Signal=USART6_TX @@ -455,32 +407,6 @@ RCC.VCO3OutputFreq_Value=100781250 RCC.VCOInput1Freq_Value=5000000 RCC.VCOInput2Freq_Value=781250 RCC.VCOInput3Freq_Value=781250 -SH.FMC_A16_CLE.0=FMC_CLE,8b-dmux1 -SH.FMC_A16_CLE.ConfNb=1 -SH.FMC_A17_ALE.0=FMC_ALE,8b-dmux1 -SH.FMC_A17_ALE.ConfNb=1 -SH.FMC_D0_DA0.0=FMC_D0,8b-dmux1 -SH.FMC_D0_DA0.ConfNb=1 -SH.FMC_D1_DA1.0=FMC_D1,8b-dmux1 -SH.FMC_D1_DA1.ConfNb=1 -SH.FMC_D2_DA2.0=FMC_D2,8b-dmux1 -SH.FMC_D2_DA2.ConfNb=1 -SH.FMC_D3_DA3.0=FMC_D3,8b-dmux1 -SH.FMC_D3_DA3.ConfNb=1 -SH.FMC_D4_DA4.0=FMC_D4,8b-dmux1 -SH.FMC_D4_DA4.ConfNb=1 -SH.FMC_D5_DA5.0=FMC_D5,8b-dmux1 -SH.FMC_D5_DA5.ConfNb=1 -SH.FMC_D6_DA6.0=FMC_D6,8b-dmux1 -SH.FMC_D6_DA6.ConfNb=1 -SH.FMC_D7_DA7.0=FMC_D7,8b-dmux1 -SH.FMC_D7_DA7.ConfNb=1 -SH.FMC_NOE.0=FMC_NOE,8b-dmux1 -SH.FMC_NOE.ConfNb=1 -SH.FMC_NWAIT.0=FMC_NWAIT,Wait1 -SH.FMC_NWAIT.ConfNb=1 -SH.FMC_NWE.0=FMC_NWE,8b-dmux1 -SH.FMC_NWE.ConfNb=1 USART1.IPParameters=VirtualMode-Asynchronous USART1.VirtualMode-Asynchronous=VM_ASYNC USART3.IPParameters=VirtualMode-Asynchronous diff --git a/Core/MDK-ARM/.eide/eide.yml b/Core/MDK-ARM/.eide/eide.yml index ac84cdc..99d7f3c 100644 --- a/Core/MDK-ARM/.eide/eide.yml +++ b/Core/MDK-ARM/.eide/eide.yml @@ -44,6 +44,23 @@ virtualFolder: - path: ../Middlewares/Third_Party/LwIP/src/apps/http/fs.c - path: ../Middlewares/Third_Party/LwIP/src/apps/http/fsdata_custom.c folders: [] + - name: USB + files: [] + folders: + - name: App + files: + - path: ../USB_DEVICE/App/usb_device.c + - path: ../USB_DEVICE/App/usb_device.h + - path: ../USB_DEVICE/App/usbd_cdc_if.c + - path: ../USB_DEVICE/App/usbd_cdc_if.h + - path: ../USB_DEVICE/App/usbd_desc.c + - path: ../USB_DEVICE/App/usbd_desc.h + folders: [] + - name: Target + files: + - path: ../USB_DEVICE/Target/usbd_conf.c + - path: ../USB_DEVICE/Target/usbd_conf.h + folders: [] - name: User files: [] folders: @@ -107,6 +124,11 @@ virtualFolder: - path: ../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c - path: ../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c - path: ../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c + - path: ../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd.c + - path: ../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd_ex.c + - path: ../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_usb.c + - path: ../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_nand.c + - path: ../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_fmc.c folders: [] - name: CMSIS files: @@ -120,6 +142,20 @@ virtualFolder: - path: ../Drivers/BSP/Components/yt8512c/yt8512c.c - path: ../Drivers/BSP/Components/lan8742/lan8742.c folders: [] + - name: STM32_USB_Device_Library + files: [] + folders: + - name: Core + files: + - path: ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c + - path: ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c + - path: ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c + folders: [] + - name: CDC + files: + - path: ../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c + - path: ../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc_if_template.c + folders: [] - name: Middlewares files: [] folders: @@ -226,9 +262,6 @@ virtualFolder: - path: ../Middlewares/Third_Party/Ykc/server_common.c - path: ../Middlewares/Third_Party/Ykc/server_to_charger.c folders: [] - - name: Charger - files: [] - folders: [] - name: cJSON files: - path: ../Middlewares/Third_Party/cJSON/cJSON.c @@ -284,9 +317,15 @@ targets: - RTE/_IPort - ../Middlewares/Third_Party/Ykc - ../Middlewares/Third_Party/cJSON + - ../USB_DEVICE/App + - ../USB_DEVICE/Target + - ../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc + - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc libList: [] excludeList: - /User/Hal/_hal_myi2c.c + settings: + debugger: cortex-debug toolchain: AC5 toolchainConfigMap: AC5: diff --git a/Core/MDK-ARM/IPort.code-workspace b/Core/MDK-ARM/IPort.code-workspace index 0142226..5c08c6d 100644 --- a/Core/MDK-ARM/IPort.code-workspace +++ b/Core/MDK-ARM/IPort.code-workspace @@ -28,6 +28,12 @@ "editor.insertSpaces": true, "editor.tabSize": 4, "editor.autoIndent": "advanced" + }, + "yaml.schemas": { + "file:///c%3A/Users/Administrator/.vscode/extensions/continue.continue-1.2.22-win32-x64/config-yaml-schema.json": [ + ".continue/**/*.yaml", + "file:///c%3A/Users/Administrator/.continue/config.yaml" + ] } }, "extensions": { diff --git a/Core/MDK-ARM/IPort.uvoptx b/Core/MDK-ARM/IPort.uvoptx index 58c232f..05bd132 100644 --- a/Core/MDK-ARM/IPort.uvoptx +++ b/Core/MDK-ARM/IPort.uvoptx @@ -1,4 +1,4 @@ - + 1.0 @@ -45,7 +45,7 @@ 79 66 8 - + 1 @@ -104,16 +104,16 @@ 0 0 3 - - - - - - - - - - + + + + + + + + + + BIN\CMSIS_AGDI.dll @@ -135,12 +135,12 @@ 0 ARMDBGFLAGS - + 0 DLGUARM - + 0 @@ -158,7 +158,7 @@ -U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(5BA02477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32H7x_2048.FLM -FS08000000 -FL0200000 -FP0($$Device:STM32H743IITx$CMSIS\Flash\STM32H7x_2048.FLM) - + 0 @@ -235,19 +235,19 @@ 0 0 - - + + 0 0 0 - - - - - - - - + + + + + + + + 1 1 diff --git a/Core/MDK-ARM/IPort.uvprojx b/Core/MDK-ARM/IPort.uvprojx index 83e5127..16eb06d 100644 --- a/Core/MDK-ARM/IPort.uvprojx +++ b/Core/MDK-ARM/IPort.uvprojx @@ -1,10 +1,7 @@ - - - + + 2.1 -
### uVision Project, (C) Keil Software
- IPort @@ -20,28 +17,28 @@ Keil.STM32H7xx_DFP.3.0.0 http://www.keil.com/pack/ IRAM(0x20000000-0x2001FFFF) IRAM2(0x24000000-0x2407FFFF) IROM(0x8000000-0x81FFFFF) CLOCK(12000000) FPU3(DFPU) CPUTYPE("Cortex-M7") ELITTLE TZ - - - + + + 0 - - - - - - - - - - + + + + + + + + + + $$Device:STM32H743IITx$CMSIS\SVD\STM32H743.svd 0 0 - - - - - + + + + + 0 0 @@ -56,15 +53,15 @@ 1 1 0 - + 1 0 0 0 0 - - + + 0 0 0 @@ -73,8 +70,8 @@ 0 0 - - + + 0 0 0 @@ -83,15 +80,15 @@ 0 1 - - + + 0 0 0 0 1 - + 0 @@ -105,8 +102,8 @@ 0 0 3 - - + + 0 @@ -139,11 +136,11 @@ 1 BIN\UL2V8M.DLL - - - - - + + + + + 0 @@ -176,7 +173,7 @@ 0 0 "Cortex-M7" - + 0 0 0 @@ -310,7 +307,7 @@ 0x80000 - + 1 @@ -337,9 +334,9 @@ 0 0 - + USE_HAL_DRIVER,STM32H743xx - + ../Core/Inc;../Drivers/STM32H7xx_HAL_Driver/Inc;../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32H7xx/Include;../Drivers/CMSIS/Include;../User/Global;../Middlewares/Third_Party/FreeRTOS/Source/include;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS;../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F;../User/Driver;../User/Hal;../User/Task;../User/Os;../LWIP/App;../LWIP/Target;../Middlewares/Third_Party/LwIP/src/include;../Middlewares/Third_Party/LwIP/system;../Drivers/BSP/Components/lan8742;../Middlewares/Third_Party/LwIP/src/include/netif/ppp;../Middlewares/Third_Party/LwIP/src/include/lwip;../Middlewares/Third_Party/LwIP/src/include/lwip/apps;../Middlewares/Third_Party/LwIP/src/include/lwip/priv;../Middlewares/Third_Party/LwIP/src/include/lwip/prot;../Middlewares/Third_Party/LwIP/src/include/netif;../Middlewares/Third_Party/LwIP/src/include/compat/posix;../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa;../Middlewares/Third_Party/LwIP/src/include/compat/posix/net;../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys;../Middlewares/Third_Party/LwIP/src/include/compat/stdc;../Middlewares/Third_Party/LwIP/system/arch;../Drivers/BSP/Components/yt8512c;../Middlewares/Third_Party/Ykc;../Middlewares/Third_Party/easydb/inc @@ -355,9 +352,9 @@ 0 1 - - - + + + ../Core/Inc @@ -368,15 +365,15 @@ 0 1 0 - - - - - - - - - + + + + + + + + + @@ -414,62 +411,6 @@ 1 ../Core/Src/dma.c - - fmc.c - 1 - ../Core/Src/fmc.c - - - 2 - 0 - 0 - 0 - 0 - 1 - 2 - 2 - 2 - 2 - 11 - - - 1 - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 0 - 0 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - memorymap.c 1 @@ -487,8 +428,6 @@ 2 2 11 - - 1 @@ -516,12 +455,6 @@ 2 2 2 - - - - - - @@ -746,118 +679,6 @@ 1 ../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c - - stm32h7xx_ll_fmc.c - 1 - ../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_fmc.c - - - 2 - 0 - 0 - 0 - 0 - 1 - 2 - 2 - 2 - 2 - 11 - - - 1 - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 0 - 0 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - - - stm32h7xx_hal_nand.c - 1 - ../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_nand.c - - - 2 - 0 - 0 - 0 - 0 - 1 - 2 - 2 - 2 - 2 - 11 - - - 1 - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 0 - 0 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - stm32h7xx_hal_tim.c 1 @@ -905,8 +726,6 @@ 2 2 11 - - 1 @@ -934,12 +753,6 @@ 2 2 2 - - - - - - 2 @@ -952,12 +765,6 @@ 2 2 1 - - - - - - @@ -1029,8 +836,6 @@ 2 2 11 - - 1 @@ -1058,12 +863,6 @@ 2 2 2 - - - - - - 2 @@ -1076,12 +875,6 @@ 2 2 1 - - - - - - @@ -1108,8 +901,6 @@ 2 2 11 - - 1 @@ -1137,12 +928,6 @@ 2 2 2 - - - - - - 2 @@ -1155,12 +940,6 @@ 2 2 1 - - - - - - @@ -1187,8 +966,6 @@ 2 2 11 - - 1 @@ -1216,12 +993,6 @@ 2 2 2 - - - - - - 2 @@ -1234,12 +1005,6 @@ 2 2 1 - - - - - - @@ -1271,8 +1036,6 @@ 2 2 11 - - 1 @@ -1300,12 +1063,6 @@ 2 2 2 - - - - - - 2 @@ -1318,12 +1075,6 @@ 2 2 1 - - - - - - @@ -1764,20 +1515,18 @@ - - + - + - + - + - @@ -1786,5 +1535,5 @@ -
+ diff --git a/Core/MDK-ARM/startup_stm32h743xx.s b/Core/MDK-ARM/startup_stm32h743xx.s index c8c2ec6..1964bab 100644 --- a/Core/MDK-ARM/startup_stm32h743xx.s +++ b/Core/MDK-ARM/startup_stm32h743xx.s @@ -29,7 +29,7 @@ ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> ; -Stack_Size EQU 0x2048 +Stack_Size EQU 0x1000 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size @@ -40,7 +40,7 @@ __initial_sp ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> ; -Heap_Size EQU 0x20000 +Heap_Size EQU 0x2000 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base diff --git a/Core/Middlewares/Third_Party/Ykc/charger_to_server.c b/Core/Middlewares/Third_Party/Ykc/charger_to_server.c index 75edb52..9d50948 100644 --- a/Core/Middlewares/Third_Party/Ykc/charger_to_server.c +++ b/Core/Middlewares/Third_Party/Ykc/charger_to_server.c @@ -19,14 +19,13 @@ void charger_to_server_0X01(uint8_t stake_index) load_charger_serial(stake_index,data.charger_serial); // 加载充电桩序列号 data.charger_type = CHARGER_TYPE_DC; data.gun_num = GUN_NUM; - data.protocol_ver = g_charger_manager.charger_piles[0].login_info.software_ver; + data.protocol_ver = g_charger_manager.charger_piles[stake_index - 1].login_info.protocol_ver; memcpy(data.software_ver, SOFTWARE_VERSION, strlen(SOFTWARE_VERSION)); data.net_conn_type = NET_CONN_TYPE; data.tele_factory = TELE_FACTORY; memcpy(data.sim, iccid_ascii, strlen(iccid_ascii)); - printf("Frame Type:0x01 充电桩登录认证(桩->平台)"); - pack_and_send_server_data(FRAME_TYPE_0X01, 0, pack_serial, (uint8_t *)&data, sizeof(PACK_DATA_0X01),stake_index); - pack_serial++; + printf("北向:对电桩 %d 发送登录认证,序列号:%s\r\n", stake_index,data.charger_serial); + pack_and_send_server_data(FRAME_TYPE_0X01, stake_index, 0, (uint8_t *)&data, sizeof(PACK_DATA_0X01),stake_index); } @@ -37,9 +36,8 @@ void charger_to_server_0X03(uint8_t stake_index,uint8_t gun_index, uint8_t gun_s load_charger_serial(stake_index,data.charger_serial); // 加载充电桩序列号 data.gun_index = gun_index; data.gun_status = gun_status; - printf("Frame Type:0x03 充电桩心跳包(桩->平台)"); - pack_and_send_server_data(FRAME_TYPE_0X03, 0, pack_serial, (uint8_t *)&data, sizeof(PACK_DATA_0X03),stake_index); - pack_serial++; + printf("北向:对电桩 %d 发送心跳请求,枪号:%d,状态:%d\r\n", stake_index,gun_index,gun_status); + pack_and_send_server_data(FRAME_TYPE_0X03, stake_index, 0, (uint8_t *)&data, sizeof(PACK_DATA_0X03),stake_index); } // 计费模型验证请求 @@ -49,9 +47,8 @@ void charger_to_server_0X05(uint16_t num,uint8_t stake_index) load_charger_serial(stake_index,data.charger_serial); // 加载充电桩序列号 data.fee_model_no = num; - printf("Frame Type:0x05 计费模型验证请求(桩->平台)"); - pack_and_send_server_data(FRAME_TYPE_0X05, 0, pack_serial, (uint8_t *)&data, sizeof(PACK_DATA_0X05),stake_index); - pack_serial++; + printf("北向:对电桩 %d 计费模型验证请求,模型号:%d\r\n", stake_index,num); + pack_and_send_server_data(FRAME_TYPE_0X05, stake_index, 0, (uint8_t *)&data, sizeof(PACK_DATA_0X05),stake_index); } // 充电桩计费模型请求 @@ -60,25 +57,22 @@ void charger_to_server_0X09(uint8_t stake_index) PACK_DATA_0X09 data = {0}; load_charger_serial(stake_index,data.charger_serial); // 加载充电桩序列号 - printf("Frame Type:0x09 充电桩计费模型请求(桩->平台)"); - pack_and_send_server_data(FRAME_TYPE_0X09, 0, pack_serial, (uint8_t *)&data, sizeof(PACK_DATA_0X09),stake_index); - pack_serial++; + printf("北向:对电桩 %d 计费模型请求,序列号:%s\r\n", stake_index,data.charger_serial); + pack_and_send_server_data(FRAME_TYPE_0X09, stake_index, 0, (uint8_t *)&data, sizeof(PACK_DATA_0X09),stake_index); } // 上传实时监测数据 void charger_to_server_0X13(uint8_t stake_index,uint8_t gun_index) { - PACK_DATA_0X13 data = {0}; - load_charger_serial(stake_index,data.charger_serial); // 加载充电桩序列号 - - // 加载充电桩交易序列号 const unsigned char trade_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - + PACK_DATA_0X13 data = {0}; + load_charger_serial(stake_index,data.charger_serial); // 加载充电桩序列号 + data.gun_index = gun_index; //data.gun_back = getGunBack(All_status[gun_index-1]); // data.gun_is_insert = getGunIsInsert(All_status[gun_index-1]); @@ -99,9 +93,8 @@ void charger_to_server_0X13(uint8_t stake_index,uint8_t gun_index) data.hard_fault = 0; } - printf("Frame Type:0x13 上传实时监测数据(桩->平台)"); - pack_and_send_server_data(FRAME_TYPE_0X13, 1, pack_serial, (uint8_t *)&data, sizeof(PACK_DATA_0X13),stake_index); - pack_serial++; + printf("北向:对电桩 %d 上传实时监测数据,枪号:%d,状态:%d,返回:%d,是否插入:%d\r\n", stake_index,gun_index,data.status,data.gun_back,data.gun_is_insert); + pack_and_send_server_data(FRAME_TYPE_0X13, stake_index, 0, (uint8_t *)&data, sizeof(PACK_DATA_0X13),stake_index); } @@ -115,9 +108,8 @@ void charger_to_server_0X33(uint8_t stake_mark,uint8_t gun_index,uint8_t result, data.result = result; data.err_code = err_code; - printf("Frame Type:0x33 平台启动回复(桩->平台)"); - pack_and_send_server_data(FRAME_TYPE_0X33,0,pack_serial,(uint8_t *)&data,sizeof(PACK_DATA_0X33),stake_mark); - pack_serial++; + printf("北向:对电桩 %d 的平台启动回复,结果:%d,错误码:%d\r\n", stake_mark,result,err_code); + pack_and_send_server_data(FRAME_TYPE_0X33, stake_mark, 0, (uint8_t *)&data, sizeof(PACK_DATA_0X33), stake_mark); } #endif \ No newline at end of file diff --git a/Core/Middlewares/Third_Party/Ykc/server_common.c b/Core/Middlewares/Third_Party/Ykc/server_common.c index 690e808..e0e25e3 100644 --- a/Core/Middlewares/Third_Party/Ykc/server_common.c +++ b/Core/Middlewares/Third_Party/Ykc/server_common.c @@ -214,6 +214,7 @@ void pack_and_send_server_data(uint8_t type, uint8_t encrypt, uint16_t serial, u { uint8_t index = 0; uint16_t crc = 0; + uint16_t current_serial = 0; uint8_t *buf = NULL; buf = (uint8_t *)pvPortMalloc(len + 14); if (!buf) @@ -221,6 +222,12 @@ void pack_and_send_server_data(uint8_t type, uint8_t encrypt, uint16_t serial, u return; } + /* 原子获取全局包序号,避免多任务竞争 */ + taskENTER_CRITICAL(); + current_serial = pack_serial; + pack_serial++; + taskEXIT_CRITICAL(); + buf[index++] = 0x55; buf[index++] = 0xAA; buf[index++] = 0x01; @@ -228,8 +235,8 @@ void pack_and_send_server_data(uint8_t type, uint8_t encrypt, uint16_t serial, u buf[index++] = SERVER_PACK_START_FLAG; buf[index++] = len + 4; - buf[index++] = (serial >> 8) & 0xFF; - buf[index++] = serial & 0xFF; + buf[index++] = (current_serial >> 8) & 0xFF; + buf[index++] = current_serial & 0xFF; buf[index++] = encrypt; buf[index++] = type; @@ -244,10 +251,10 @@ void pack_and_send_server_data(uint8_t type, uint8_t encrypt, uint16_t serial, u buf[index++] = 0xAA; buf[index++] = 0x55; - for (int i = 4; i < index - 2; i++) - { - printf("%02X", buf[i]); - } + // for (int i = 4; i < index - 2; i++) + // { + // printf("%02X", buf[i]); + // } Air724_Message_Send(buf, index); vPortFree(buf); } @@ -257,7 +264,8 @@ int get_num_from_string(const char *str, int *num) int index = 0; int t = 0; int flag = 0; - for (int i = 0; i < len; i++) + int i; + for (i = 0; i < len; i++) { flag = 0; while ((str[i] >= '0' && str[i] <= '9') && (i < len)) diff --git a/Core/Middlewares/Third_Party/Ykc/server_to_charger.c b/Core/Middlewares/Third_Party/Ykc/server_to_charger.c index a78ba42..1a823b3 100644 --- a/Core/Middlewares/Third_Party/Ykc/server_to_charger.c +++ b/Core/Middlewares/Third_Party/Ykc/server_to_charger.c @@ -12,7 +12,7 @@ void on_cmd_frame_type_0X02(uint8_t stake_index, SERVER_PACK *pack) { g_charger_manager.charger_piles[stake_index - 1].is_online = 1; #ifdef DEBUG - printf("桩ID %d 登陆成功!\r\n", stake_index); + printf("北向:桩ID %d 登陆成功!\r\n", stake_index); #endif } } @@ -24,7 +24,7 @@ void on_cmd_frame_type_0X04(uint8_t stake_index, SERVER_PACK *pack) PACK_DATA_0X04 data; memcpy(&data, pack->data, sizeof(PACK_DATA_0X04)); #ifdef DEBUG - printf("桩ID %d 收到心跳应答!\r\n", stake_index); + printf("北向:桩ID %d 收到心跳应答!\r\n", stake_index); #endif } @@ -36,7 +36,7 @@ void on_cmd_frame_type_0X06(uint8_t stake_index, SERVER_PACK *pack) if (is_my_charger_serial(stake_index, data.charger_serial)) { #ifdef DEBUG - printf("接收到计费模型验证应答,模型ID:%d, 验证结果:%d\r\n", data.fee_model_no, data.result); + printf("北向:接收到计费模型验证应答,模型ID:%d, 验证结果:%d\r\n", data.fee_model_no, data.result); #endif } } @@ -54,12 +54,12 @@ void on_cmd_frame_type_0X0A(uint8_t stake_index, SERVER_PACK *pack) #ifdef DEBUG - printf("接收到计费模型应答,模型ID:%d\r\n", g_charger_manager.fee_model_global.fee_model_no); + printf("北向:接收到计费模型应答,模型ID:%d\r\n", g_charger_manager.fee_model_global.fee_model_no); printf("尖电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.shark_fee_ratio, g_charger_manager.fee_model_global.shark_service_ratio); printf("峰电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.peak_fee_ratio, g_charger_manager.fee_model_global.peak_service_ratio); printf("平电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.flat_fee_ratio, g_charger_manager.fee_model_global.flat_service_ratio); printf("谷电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.valley_fee_ratio, g_charger_manager.fee_model_global.valley_service_ratio); - printf("计损比例:%d%%\r\n", g_charger_manager.fee_model_global.loss_ratio); + printf("计损比例: %d%% \r\n", g_charger_manager.fee_model_global.loss_ratio); printf("\n合并后的费率时间段:\r\n"); printf("================================================================\r\n"); @@ -111,7 +111,7 @@ void on_cmd_frame_type_0X0A(uint8_t stake_index, SERVER_PACK *pack) end_hour = 0; } - printf("%02d:%02d-%02d:%02d 为 %s费率\r", + printf("%02d:%02d-%02d:%02d 为 %s 费率\r\n", start_hour, start_min, end_hour, end_min, fee_name); @@ -137,21 +137,12 @@ void on_cmd_frame_type_0X58(uint8_t stake_index, SERVER_PACK *pack) #ifdef DEBUG char str[150]; Rs485_Message_Send("t0.txt=\"\"\xff\xff\xff", 12); - printf("接收到计费模型应答,模型ID:%d\r\n", g_charger_manager.fee_model_global.fee_model_no); + printf("北向:接收到计费模型应答,模型ID:%d\r\n", g_charger_manager.fee_model_global.fee_model_no); printf("尖电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.shark_fee_ratio, g_charger_manager.fee_model_global.shark_service_ratio); printf("峰电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.peak_fee_ratio, g_charger_manager.fee_model_global.peak_service_ratio); printf("平电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.flat_fee_ratio, g_charger_manager.fee_model_global.flat_service_ratio); printf("谷电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.valley_fee_ratio, g_charger_manager.fee_model_global.valley_service_ratio); - printf("计损比例:%d%%\r\n", g_charger_manager.fee_model_global.loss_ratio); - - sprintf(str, "t0.txt+=\"尖电费 %d 服务费 %d \r\n峰电费 %d 服务费 %d \r\n平电费 %d 服务费 %d \r\n谷电费 %d 服务费 %d \r\n计损比例 %d%%\r\n\"\xff\xff\xff", - g_charger_manager.fee_model_global.shark_fee_ratio, g_charger_manager.fee_model_global.shark_service_ratio, - g_charger_manager.fee_model_global.peak_fee_ratio, g_charger_manager.fee_model_global.peak_service_ratio, - g_charger_manager.fee_model_global.flat_fee_ratio, g_charger_manager.fee_model_global.flat_service_ratio, - g_charger_manager.fee_model_global.valley_fee_ratio, g_charger_manager.fee_model_global.valley_service_ratio, - g_charger_manager.fee_model_global.loss_ratio); - Rs485_Message_Send(str, strlen(str)); - + printf("计损比例: %d%% \r\n", g_charger_manager.fee_model_global.loss_ratio); printf("\n合并后的费率时间段:\r\n"); printf("================================================================\r\n"); @@ -202,17 +193,10 @@ void on_cmd_frame_type_0X58(uint8_t stake_index, SERVER_PACK *pack) end_hour = 0; } - printf("%02d:%02d-%02d:%02d 为 %s费率\r", + printf("%02d:%02d-%02d:%02d 为 %s 费率\r", start_hour, start_min, end_hour, end_min, fee_name); - - sprintf(str, "t0.txt+=\"%02d:%02d-%02d:%02d 为 %s费率 \r\n\"\xff\xff\xff", - start_hour, start_min, - end_hour, end_min, - fee_name); - Rs485_Message_Send(str, strlen(str)); - i = j; // 跳到下一个不同费率段 } printf("================================================================\r\n"); @@ -227,8 +211,9 @@ void on_cmd_frame_type_0X34(uint8_t stake_index, SERVER_PACK *pack) uint8_t result = 1; uint8_t err_code = 0; memcpy(&data, pack->data, sizeof(PACK_DATA_0X34)); - set_trade_serial(data.gun_index, data.trade_serial, stake_index); - + set_trade_serial(stake_index,data.gun_index, data.trade_serial); + printf("北向:平台控制充电,桩ID:%d, 枪ID:%d, 金额:%d\r\n", stake_index, data.gun_index, data.remain_money); + if (!is_my_charger_serial(stake_index, data.charger_serial)) { result = 0; @@ -257,6 +242,7 @@ void on_cmd_frame_type_0X34(uint8_t stake_index, SERVER_PACK *pack) // set_charge_start_mode(data.gun_index - 1, CAHRGE_START_MODE_APP); // update_remain_money_to_gun(data.gun_index - 1, data.remain_money); // } + charger_to_server_0X33(stake_index, data.gun_index, result, err_code); } #if 0 diff --git a/Core/User/Driver/drv_init.c b/Core/User/Driver/drv_init.c index 0cc943c..4af922c 100644 --- a/Core/User/Driver/drv_init.c +++ b/Core/User/Driver/drv_init.c @@ -9,11 +9,34 @@ */ /* Includes -------------------------------------------------------------------*/ #include "drv_init.h" -// crc16_modbus.c #include /* code -----------------------------------------------------------------------*/ - +void send_cmd_to_air724(uint8_t *cmd, uint16_t len) +{ + Air724_Message_Send(cmd, len); +} +void send_server_address_to_air724(void) +{ + char ip[] = YKC_SERVER_IP; + char port[6]; + sprintf(port, "%d", YKC_SERVER_PORT); + + uint8_t len = strlen(ip) + 1 + strlen(port); + uint8_t config_cmd[256] = {0x55, 0xAA, 0x04, 0x00, len}; + + uint8_t pos = 5; + memcpy(&config_cmd[pos], ip, strlen(ip)); + pos += strlen(ip); + config_cmd[pos++] = 0x00; + memcpy(&config_cmd[pos], port, strlen(port)); + pos += strlen(port); + config_cmd[pos++] = 0xAA; + config_cmd[pos++] = 0x55; + send_cmd_to_air724(config_cmd, pos); + pos = 0; + memset(config_cmd, 0, sizeof(config_cmd)); +} /** * @brief drv_all_Init:所有传感器、外设芯片、外部设备初始化 * @@ -26,5 +49,5 @@ void drv_all_Init(void) { - AIR724_RESET(); /* AIR724 复位 */ + AIR724_RESET(); /* AIR724 复位 */ } diff --git a/Core/User/Driver/drv_init.h b/Core/User/Driver/drv_init.h index 764c6f1..eafba57 100644 --- a/Core/User/Driver/drv_init.h +++ b/Core/User/Driver/drv_init.h @@ -10,6 +10,5 @@ /* Exported functions prototypes ------------------------------------------------------------------------*/ void drv_all_Init(void); - #endif /* __DRVINIT_H */ diff --git a/Core/User/Global/g_dcpile.c b/Core/User/Global/g_dcpile.c index 56e5bf4..7a17402 100644 --- a/Core/User/Global/g_dcpile.c +++ b/Core/User/Global/g_dcpile.c @@ -12,7 +12,6 @@ const uint8_t piles_serial[6][7] = { {0x88, 0x26, 0x01, 0x13, 0x12, 0x00, 0x03}, {0x88, 0x26, 0x01, 0x13, 0x12, 0x00, 0x04}, {0x88, 0x26, 0x01, 0x13, 0x12, 0x00, 0x05}, - }; /** diff --git a/Core/User/Global/g_dcpile.h b/Core/User/Global/g_dcpile.h index 385dd1c..5dde9ff 100644 --- a/Core/User/Global/g_dcpile.h +++ b/Core/User/Global/g_dcpile.h @@ -5,7 +5,7 @@ /* includes ----------------------------------------------------------------------------------------------*/ #include "global.h" -#define MAX_CHARGER_COUNT 6 // 充电桩数量 +#define MAX_CHARGER_COUNT 2 // 充电桩数量 #define MAX_GUN_PER_CHARGER 2 // 每个充电桩最多枪数 /* 充电枪结构体*/ diff --git a/Core/User/Global/global.h b/Core/User/Global/global.h index 22bf9ca..46f3374 100644 --- a/Core/User/Global/global.h +++ b/Core/User/Global/global.h @@ -28,8 +28,6 @@ #include "usart.h" #include "gpio.h" -// #include "tim.h" - /* freeRTOS 相关 */ #include "cmsis_os.h" #include "FreeRTOS.h" @@ -72,6 +70,9 @@ #define DEBUG 1 // 调试模式 +#define YKC_SERVER_IP "121.43.69.62" // YKC 服务器 IP 地址 +#define YKC_SERVER_PORT 8767 // YKC 服务器端口号 + /*- I/O 输出-*/ #define AIR724_RESET() \ diff --git a/Core/User/Hal/_hal_usart.c b/Core/User/Hal/_hal_usart.c index 1c12ce6..86db239 100644 --- a/Core/User/Hal/_hal_usart.c +++ b/Core/User/Hal/_hal_usart.c @@ -18,6 +18,8 @@ uint8_t uart1_tx_buffer[UART1_TX_BUFFER_SIZE]; uint8_t uart3_rx_buffer[UART3_RX_BUFFER_SIZE]; uint8_t uart3_tx_buffer[UART3_TX_BUFFER_SIZE]; +static SemaphoreHandle_t air724_tx_mutex = NULL; + /* code -----------------------------------------------------------------------*/ /** * @brief fputc:printf映射 @@ -46,7 +48,18 @@ int fputc(int ch, FILE *f) */ void Air724_Message_Send(uint8_t *data, uint16_t len) { - HAL_UART_Transmit(&huart1, data, len, HAL_MAX_DELAY); + if (air724_tx_mutex != NULL) + { + if (xSemaphoreTake(air724_tx_mutex, portMAX_DELAY) == pdTRUE) + { + HAL_UART_Transmit(&huart1, data, len, HAL_MAX_DELAY); + xSemaphoreGive(air724_tx_mutex); + } + } + else + { + HAL_UART_Transmit(&huart1, data, len, HAL_MAX_DELAY); + } } void Rs485_Message_Send(uint8_t *data, uint16_t len) @@ -68,6 +81,7 @@ void Rs485_Message_Send(uint8_t *data, uint16_t len) void hal_usart_Init(void) { + air724_tx_mutex = xSemaphoreCreateMutex(); /* 初始化串口1 */ Air724_Message_Queue_Init(); // 初始化4G数据接收队列 diff --git a/Core/User/Task/ChargerTask.c b/Core/User/Task/ChargerTask.c index 053d970..477c1b0 100644 --- a/Core/User/Task/ChargerTask.c +++ b/Core/User/Task/ChargerTask.c @@ -89,7 +89,7 @@ void UDP_ParseTask_Function(void const *argument) } else { - printf("Missing 'code' field\r\n"); + printf("Missing 'code' field from \r\n"); cJSON_Delete(root); } vPortFree(msg.data); @@ -145,9 +145,10 @@ void UDPTask_Function(void const *argument) { memcpy(msg.data, playload, playload_len); msg.data[playload_len] = '\0'; + // 队列满,释放数据内存 if (xQueueSend(UDP_Message_Queue, &msg, 0) != pdPASS) { - vPortFree(msg.data); + vPortFree(msg.data); } } } @@ -178,6 +179,70 @@ void local_on_cmd_callback_power_on(uint8_t stake_index, cJSON *json_pack) g_charger_manager.charger_piles[stake_index - 1].is_udp_online = true; // 设置桩为本地在线状态 cJSON *root = NULL; + uint8_t *str = NULL; + + root = cJSON_CreateObject(); + if (root == NULL) + { + printf("Failed to create JSON object for stake %d\r\n", stake_index); + return; + } + + /* 添加一条字符串类型的JSON数据(添加一个链表节点) */ + cJSON_AddNumberToObject(root, "id", stake_index); + cJSON_AddStringToObject(root, "cmd", "online"); + cJSON_AddStringToObject(root, "type", "response"); + + str = cJSON_Print(root); + udp_send_response(stake_index, str, strlen(str)); + free(str); + cJSON_Delete(root); + + printf("南向:对电桩 %d 上电回复成功\r\n", stake_index); +} + +/** + * @brief 解析充电桩心跳指令 + * @note 回复心跳应答 + * @param stake_index 桩索引 + * @param json_pack json数据包 + */ +void local_on_cmd_callback_heartbeat_response(uint8_t stake_index, cJSON *json_pack) +{ + if (stake_index > 6) + { + return; + } + //心跳unpack + + cJSON *gun_array = cJSON_GetObjectItem(json_pack, "gun"); + // 直接判断 type 字段 + if (gun_array == NULL || gun_array->type != cJSON_Array) + { + printf(" └── [error] 缺少 gun 数组\r\n"); + return; + } + + + + int gun_count = cJSON_GetArraySize(gun_array); + for (int i = 0; i < gun_count; i++) + { + cJSON *gun = cJSON_GetArrayItem(gun_array, i); + if (!gun) continue; + + cJSON *id = cJSON_GetObjectItem(gun, "id"); + cJSON *state = cJSON_GetObjectItem(gun, "state"); + + if (!id || !state) continue; + + // if (id->valueint == 1) pile->gun1_state = state->valueint; + // if (id->valueint == 2) pile->gun2_state = state->valueint; + printf(" └── [info] 桩%d 枪%d state=%d\r\n", stake_index, id->valueint, state->valueint); + } + + //心跳回复组包 + cJSON *root = NULL; char *str = NULL; root = cJSON_CreateObject(); @@ -189,29 +254,15 @@ void local_on_cmd_callback_power_on(uint8_t stake_index, cJSON *json_pack) /* 添加一条字符串类型的JSON数据(添加一个链表节点) */ cJSON_AddNumberToObject(root, "id", stake_index); - cJSON_AddStringToObject(root, "cmd", "power_on"); - cJSON_AddNumberToObject(root, "code", 1); + cJSON_AddStringToObject(root, "cmd", "heartbeat"); + cJSON_AddStringToObject(root, "type", "response"); str = cJSON_Print(root); udp_send_response(stake_index, str, strlen(str)); free(str); cJSON_Delete(root); - printf("电桩 %d 上电报文\r\n", stake_index); -} - -/** - * @brief 解析充电桩计费模型请求指令 - * @note 获取云快充下发的计费模型,回复给充电桩 - * @param stake_index 桩索引 - * @param json_pack json数据包 - */ -void local_on_cmd_callback_get_billing_model(uint8_t stake_index, cJSON *json_pack) -{ - if (stake_index > 6) - { - return; - } + printf("南向:对电桩 %d 心跳回复成功\r\n", stake_index); } @@ -220,13 +271,17 @@ void handle_udp_downlink(uint8_t id, const char *cmd, cJSON *json_pack) { if (cmd == NULL) return; - if (strcmp(cmd, "power_on") == 0) + // 处理上电指令 + if (strcmp(cmd, "online") == 0) { + printf("南向:收到电桩 %d 上电指令\r\n", id); local_on_cmd_callback_power_on(id, json_pack); } - else if (strcmp(cmd, "get_billing_model") == 0) + // 处理心跳指令 + else if (strcmp(cmd, "heartbeat") == 0) { - local_on_cmd_callback_get_billing_model(id, json_pack); + printf("南向:收到电桩 %d 心跳指令\r\n", id); + local_on_cmd_callback_heartbeat_response(id, json_pack); } else { diff --git a/Core/User/Task/DatalinkTask.c b/Core/User/Task/DatalinkTask.c index 341aae1..cf24ff4 100644 --- a/Core/User/Task/DatalinkTask.c +++ b/Core/User/Task/DatalinkTask.c @@ -45,7 +45,6 @@ void DownLinkTask_Function(void const *argument) while (1) { /*---------------------------------------------------获取任务运行状态---------------------------------------------------*/ - TaskRunTimeStat.DownLinkTask.threads_runtime = GetTask_RunTime(DownLinkTaskID); TaskRunTimeStat.DownLinkTask.threads_counter = GetTask_Beatcnt(DownLinkTaskID); TaskRunTimeStat.DownLinkTask.threads_freestack = Get_Free_Stack(DownLinkTaskID); @@ -74,22 +73,30 @@ void DownLinkTask_Function(void const *argument) memcpy(frame.data, ykc_downlink_frame + HEADER_LENGTH, frame.len - 4); frame.crc = (ykc_downlink_frame[HEADER_LENGTH + frame.len] << 8) | ykc_downlink_frame[HEADER_LENGTH + frame.len + 1]; - printf("Raw Bytes: "); - for (int i = 0; i < ykc_downlink_frame_len; i++) - { - printf("%02X ", ykc_downlink_frame[i]); - if ((i + 1) % 16 == 0) // 每16字节换行 - { - printf("\r"); - } - } - printf("\r"); + // printf("Raw Bytes: "); + // for (int i = 0; i < ykc_downlink_frame_len; i++) + // { + // printf("%02X ", ykc_downlink_frame[i]); + // if ((i + 1) % 16 == 0) // 每16字节换行 + // { + // printf("\r"); + // } + // } + // printf("\r"); handle_ykc_downlink(charger_index, &frame); vPortFree(frame.data); } break; + case 0x83: + { + if (air724_rx_msg[3] == 0x01) + printf("4G:Socket %d 通道连接成功\r\n", air724_rx_msg[4]); + if (air724_rx_msg[3] == 0x02) + printf("4G:Socket %d 通道断开成功\r\n", air724_rx_msg[4]); + } + break; } } } diff --git a/Core/User/Task/HeartBeatTask.c b/Core/User/Task/HeartBeatTask.c index adadc21..cf3f36e 100644 --- a/Core/User/Task/HeartBeatTask.c +++ b/Core/User/Task/HeartBeatTask.c @@ -13,34 +13,6 @@ void HeartBeat_Sign(void); -/** - * @brief 发送显示数据 - * @note 发送显示数据,包括充电桩的连接状态和工作状态 - */ -void Send_Display_Data(void) -{ - #ifdef DEBUG - char str[128]; - sprintf(str, "t1.bco=%s\xff\xff\xfft2.bco=%s\xff\xff\xfft3.bco=%s\xff\xff\xfft4.bco=%s\xff\xff\xfft5.bco=%s\xff\xff\xfft6.bco=%s\xff\xff\xff", - g_charger_manager.charger_piles[0].is_udp_online ? "GREEN" : "RED", - g_charger_manager.charger_piles[1].is_udp_online ? "GREEN" : "RED", - g_charger_manager.charger_piles[2].is_udp_online ? "GREEN" : "RED", - g_charger_manager.charger_piles[3].is_udp_online ? "GREEN" : "RED", - g_charger_manager.charger_piles[4].is_udp_online ? "GREEN" : "RED", - g_charger_manager.charger_piles[5].is_udp_online ? "GREEN" : "RED"); - Rs485_Message_Send(str, strlen(str)); - - sprintf(str, "t7.bco=%s\xff\xff\xfft8.bco=%s\xff\xff\xfft9.bco=%s\xff\xff\xfft10.bco=%s\xff\xff\xfft11.bco=%s\xff\xff\xfft12.bco=%s\xff\xff\xff", - g_charger_manager.charger_piles[0].is_online ? "GREEN" : "RED", - g_charger_manager.charger_piles[1].is_online ? "GREEN" : "RED", - g_charger_manager.charger_piles[2].is_online ? "GREEN" : "RED", - g_charger_manager.charger_piles[3].is_online ? "GREEN" : "RED", - g_charger_manager.charger_piles[4].is_online ? "GREEN" : "RED", - g_charger_manager.charger_piles[5].is_online ? "GREEN" : "RED"); - Rs485_Message_Send(str, strlen(str)); - - #endif -} /** * @funNm : HeartbeatTask_Function @@ -69,13 +41,30 @@ void HeartbeatTask_Function(void const *argument) * @param : none * @retval: void */ +static uint32_t last_heartbeat_tick[MAX_CHARGER_COUNT] = {0}; + void HeartBeat_Sign(void) { - if (g_charger_manager.charger_piles[0].is_online) + int i; + uint32_t now = HAL_GetTick(); + bool any_online = false; + + /* 6路桩独立心跳,互不影响 */ + for (i = 0; i < MAX_CHARGER_COUNT; i++) + { + if (g_charger_manager.charger_piles[i].is_online) + { + any_online = true; + if ((now - last_heartbeat_tick[i]) >= 8000) + { + last_heartbeat_tick[i] = now; + charger_to_server_0X03(i + 1, 1, 0); + } + } + } + + if (any_online) { - RUN_EVERY(8000, tick_A, { - charger_to_server_0X03(1, 1, 0); - }); RUN_EVERY(100, tick_B, { System_Mode_Led_Toggle(); }); @@ -90,7 +79,4 @@ void HeartBeat_Sign(void) RUN_EVERY(1000, tick_D, { System_Run_Led_Toggle(); }); - RUN_EVERY(500, tick_E, { - Send_Display_Data(); - }); } diff --git a/Core/User/Task/YkcTask.c b/Core/User/Task/YkcTask.c index 2a274a2..71f9ea0 100644 --- a/Core/User/Task/YkcTask.c +++ b/Core/User/Task/YkcTask.c @@ -28,6 +28,8 @@ void YkcTask_Function(void const *argument) { init_chargers(); /* 初始化桩结构体*/ ulTaskNotifyTake(pdTRUE, portMAX_DELAY); /* 等待桩通讯协议层完成*/ + osDelay(5000); + // send_server_address_to_air724(); while (1) { TaskRunTimeStat.YkcTask.threads_runtime = GetTask_RunTime(YkcTaskID); @@ -36,36 +38,59 @@ void YkcTask_Function(void const *argument) switch (SETP) { - case 0: + case 0: + { + + if (g_charger_manager.charger_piles[1 - 1].is_udp_online) + { + uint8_t open_cmd[] = { 0x55, 0xAA, 0x3, 0x01, 0x01, 0xAA, 0x55}; + Air724_Message_Send(open_cmd, sizeof(open_cmd)); + osDelay(3000); + SETP = 1; + } + else + { + printf("网关:等待桩上电指令\r\n"); + osDelay(1000); + SETP = 0; + } + + } + break; + case 1: { if (!g_charger_manager.charger_piles[1 - 1].is_online) { charger_to_server_0X01(1); + } else { - SETP = 1; - } - } - break; - case 1: - { - if (!g_charger_manager.charger_piles[1 - 1].get_model) - charger_to_server_0X09(1); // 桩1计费模型请求 - else SETP = 2; + } + osDelay(5000); } break; case 2: + { + if (!g_charger_manager.charger_piles[1 - 1].get_model) + charger_to_server_0X09(1); // 桩1计费模型请求 + else + SETP = 3; + osDelay(3000); + } + break; + case 3: { charger_to_server_0X13(1, 1); // 上传状态 + osDelay(15000); } break; default: break; } - osDelay(2000); + //osDelay(2000); } } diff --git a/Core/User/Task/新建 文本文档 (2).txt b/Core/User/Task/新建 文本文档 (2).txt deleted file mode 100644 index e69de29..0000000 diff --git a/Core/User/Task/新建 文本文档.txt b/Core/User/Task/新建 文本文档.txt deleted file mode 100644 index e69de29..0000000