广州大彩串口屏论坛_大彩开发者交流论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3359|回复: 11

烧录新程序怎么擦除上一次存在FLASH里的数据?

[复制链接]

11

主题

30

帖子

175

积分

注册会员

Rank: 2

积分
175
发表于 2025-5-20 09:25:13 | 显示全部楼层 |阅读模式
请问我按照下述代码进行存flash,下电读取loginpassword也可以,但是我发现个问题烧录新程序时loginpassword不会回到我默认值,反而是我上一次存在flash
中的值,请问有没有什么办法在烧录新程序时擦除flash


password_addr = 0x0400

local loginpassword="123456"

elseif screen==page_define.login  then --开机界面
        if read_flash_string(password_addr) ~="" then
            loginpassword=read_flash_string(password_addr)
        end
        if control == 3 and value ==1 then
            if  get_text(10,99) == loginpassword  then
                change_screen(page_define.Human_XL)
            else
                set_visiable(page_define.login,15,1)
            end
        elseif control == 95 and value == 1 then
            loginpassword=get_text(10,97)
            flush_flash()
            write_flash_string(password_addr,loginpassword)
        elseif control == 93 and value == 1 then
            loginpassword="123456"
            flush_flash()
            write_flash_string(password_addr,loginpassword)
        end


回复

使用道具 举报

0

主题

759

帖子

2208

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2208
发表于 2025-5-20 10:52:11 | 显示全部楼层
在初始化里面对一个你不会进行存储的地址进行判断任意一个值,不为这个值就把你之前存储flash地址全部重新存储一遍置0值。后续在初始化对不会存储的值和你存储的值or  进行判断

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

11

主题

30

帖子

175

积分

注册会员

Rank: 2

积分
175
 楼主| 发表于 2025-5-20 11:31:05 | 显示全部楼层
dctechnology 发表于 2025-5-20 10:52
在初始化里面对一个你不会进行存储的地址进行判断任意一个值,不为这个值就把你之前存储flash地址全部重新 ...

抱歉,没看懂你发的这个,能不能发个demo我测试一下,我这边就是想在烧程序时擦除flash,正常上下电不会擦除,或者说在烧录程序时给想要擦除的FLASH地址一个默认值也行
回复

使用道具 举报

0

主题

759

帖子

2208

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2208
发表于 2025-5-20 14:35:57 | 显示全部楼层
1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

11

主题

30

帖子

175

积分

注册会员

Rank: 2

积分
175
 楼主| 发表于 2025-5-20 15:03:51 | 显示全部楼层

你好,你发的这个demo什么意思啊?   for i=0,2047 do
        data=0xff
    end
    for k=0,131072,2048 do
        print(k)
        write_flash(k,data)
        feed_dog()
    end就这一段代码??连flash地址都没有??麻烦再看下我的问题谢谢
回复

使用道具 举报

0

主题

759

帖子

2208

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2208
发表于 2025-5-20 15:30:12 | 显示全部楼层
小hang 发表于 2025-5-20 15:03
你好,你发的这个demo什么意思啊?   for i=0,2047 do
        data=0xff
    end

这个是让flash地址全都清空
回复

使用道具 举报

11

主题

30

帖子

175

积分

注册会员

Rank: 2

积分
175
 楼主| 发表于 2025-5-20 15:32:35 | 显示全部楼层
dctechnology 发表于 2025-5-20 15:30
这个是让flash地址全都清空

这个上电就会清空?我这边是正常上下电要求不会清空,只有再次烧录程序才清空或者我给个默认值也可以
回复

使用道具 举报

0

主题

759

帖子

2208

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2208
发表于 2025-5-20 17:22:56 | 显示全部楼层
小hang 发表于 2025-5-20 15:32
这个上电就会清空?我这边是正常上下电要求不会清空,只有再次烧录程序才清空或者我给个默认值也可以 ...

我给的这个就是你下载这个程序之后上电就会情况flash,后续再下载你的工程就不会显示之前存储的地址值了
回复

使用道具 举报

11

主题

30

帖子

175

积分

注册会员

Rank: 2

积分
175
 楼主| 发表于 2025-5-21 09:39:09 | 显示全部楼层
dctechnology 发表于 2025-5-20 17:22
我给的这个就是你下载这个程序之后上电就会情况flash,后续再下载你的工程就不会显示之前存储的地址值了 ...

Screen0=0
Screen1=1
password_addr = 0x0400   
local loginpassword="123456"
--初始化函数
function on_init()
    set_visiable(0,15,0)
   for i=0,2047 do
        data=0xff
    end
    for k=0,131072,2048 do
        print(k)
        write_flash(k,data)
        feed_dog()
    end
end
--用户通过触摸修改控件后,执行此回调函数。
--点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
function on_control_notify(screen,control,value)
    if screen == 0 then
        if read_flash_string(password_addr) ~="" then
            loginpassword=read_flash_string(password_addr)
        end
        if control == 3 and value ==1 then
            if  get_text(0,99) == loginpassword  then
                change_screen(Screen1)
            else
                set_visiable(0,15,1)
            end
        elseif control == 95 and value == 1 then
            loginpassword=get_text(0,97)
            flush_flash()
            write_flash_string(password_addr,loginpassword)
        elseif control == 93 and value == 1 then
            loginpassword="123456"
            flush_flash()
            write_flash_string(password_addr,loginpassword)
        end       
    end
end
你好,麻烦看下我的程序,加入你的程序这个确实能够清空FLASH,但是我这边是要烧录程序时清空FLASH,你这个程序我加入后上电就会清空FLASH,我存的数据全没了吗,我想要实现的效果是在烧录程序时能够恢复默认值local loginpassword="123456",在后续我修改loginpassword的值能够保存在FLASH,无论我掉电再上电flash都不会清空,只有我再次烧录程序时才会清空password_addr = 0x0400   
中的值,恢复默认值,麻烦您看下程序和我这边的难点,谢谢~
回复

使用道具 举报

0

主题

759

帖子

2208

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2208
发表于 2025-5-22 17:38:21 | 显示全部楼层
小hang 发表于 2025-5-21 09:39
Screen0=0
Screen1=1
password_addr = 0x0400   

我的工程是直接清空你的所有flash地址值,你只需要刷我工程一次,再后面你正常用你存储flash工程的地址,不用加入我的lua脚本进去,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|广州大彩串口屏论坛_大彩开发者交流论坛

GMT+8, 2025-8-30 13:16 , Processed in 0.053540 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表