yangzi8000 发表于 2017-8-13 10:16:43

请教linux板子如何存储初始化参数

本帖最后由 yangzi8000 于 2017-8-13 10:20 编辑

以前做单片机,运行需要的参数一般存在外挂的存储芯片里面,l初始化读出来用,能方便修改再写入,linux板子一般如何处理这个问题?? 比如4-20ma量程参数。。。。。 这些怎么处理最好,有哪些哪个板子有相关的程序可以参考下

vtte 发表于 2017-8-13 10:19:49

linux应该更方便啊,以文件方式保存不就可以了?

yangzi8000 发表于 2017-8-13 10:21:20

本帖最后由 yangzi8000 于 2017-8-13 10:23 编辑

vtte 发表于 2017-8-13 10:19
linux应该更方便啊,以文件方式保存不就可以了?

请教下,如果好几十个参数怎么写呢,写到文本里面?还是二进制文件里面


如果修改其中一个参数,如何再次写入呢?

boyiee 发表于 2017-8-13 10:35:17

不要用单片机的思维来考虑。。。

以前遇到个客户 我是做核心板的,他做的底板上专门放了个EEPROM和SPIFLASH和一个语音芯片,我问干什么用的,他说存eeprom存IP地址等参数,spiflash存事件历史记录的,还有语音提示,我说不是你用文件存起来不就行了,客户才想到核心板跑linux的emmc上也可以存数据。。。。。。音频也是,他说用惯单片机了。。。

还遇到过一次客户linux非要用以太网转串口的。。。 最后才知道他不会socket编程。。

boyiee 发表于 2017-8-13 10:37:47

yangzi8000 发表于 2017-8-13 10:21
请教下,如果好几十个参数怎么写呢,写到文本里面?还是二进制文件里面




你几十个参数哪怕几百个,弄个文本存起来就可以了,最简单的一行一个参数。
修改的时候按文件读写或者最简单用sed就可以了。

yangzi8000 发表于 2017-8-13 10:46:06

本帖最后由 yangzi8000 于 2017-8-13 11:00 编辑

boyiee 发表于 2017-8-13 10:37
你几十个参数哪怕几百个,弄个文本存起来就可以了,最简单的一行一个参数。
修改的时候按文件读写或者最 ...

谢谢解释,我想问下如果一行一个参数,如何只修改其中一个参数呢,你们提供核心板,给个链接看下,我们公司想升级产品,加个QQ

boyiee 发表于 2017-8-13 11:40:18

yangzi8000 发表于 2017-8-13 10:46
谢谢解释,我想问下如果一行一个参数,如何只修改其中一个参数呢,你们提供核心板,给个链接看下,我们公 ...

你可以把文件按行读出来,自己修改,或者整个读出来,搜索字符串,然后替换,或者明确每行的定义直接替换就可以了。
跑linux了用文本最方便。

radar_12345 发表于 2017-8-13 11:46:23

参数一般都 ini 文件

浮华一生 发表于 2017-8-13 11:54:49

Linux很多开源的配置   找一个 交叉编译就能用了   

hongfadg 发表于 2017-8-13 12:51:16

这个简单啊,,结构体会把,指针会吧,你把参数用结构体保存,再转为指针,以二进制保存到文件,,读取时再,逆操作。别说你几十个参数,就是上万个参数,只要配置跟得上,也都不是问题!

wye11083 发表于 2017-8-13 13:03:15

boyiee 发表于 2017-8-13 11:40
你可以把文件按行读出来,自己修改,或者整个读出来,搜索字符串,然后替换,或者明确每行的定义直接替换 ...

干吗都来诱导LZ?直接放env里面不得了{:dizzy:}

yangzi8000 发表于 2017-8-13 13:18:45

本帖最后由 yangzi8000 于 2017-8-13 13:22 编辑

wye11083 发表于 2017-8-13 13:03
干吗都来诱导LZ?直接放env里面不得了

是env环境变量文件,能举个例子吗,刚开始弄,比如我要设置一个可以读写的long型的量a

wye11083 发表于 2017-8-13 13:26:43

yangzi8000 发表于 2017-8-13 13:18
是env环境变量文件,能举个例子吗,刚开始弄,比如我要设置一个可以读写的long型的量a
...

env是字符串。读写你要上网去找,我想不起来了。另外,如果要保存到flash里面去,你可能还得找接口。

不过,一个好消息是你可以把要存的东西转成字符串,然后调用系统命令去写——你不需要自己去写flash

hexenzhou 发表于 2017-8-13 15:42:16

参数我们都放到config.ini里面

yangzi8000 发表于 2017-8-13 15:44:34

本帖最后由 yangzi8000 于 2017-8-13 15:46 编辑

hexenzhou 发表于 2017-8-13 15:42
参数我们都放到config.ini里面

这个是自己新建的文件,还是系统自带的文件???这个怎么读写呢用fopen。。。 还是其他方法,能看下文件里面怎么写的吗?二进制还是ASCII?

our2008 发表于 2017-8-13 15:50:33

boyiee 发表于 2017-8-13 11:40
你可以把文件按行读出来,自己修改,或者整个读出来,搜索字符串,然后替换,或者明确每行的定义直接替换 ...

请教自己做了一块底板,使用AM3358片子,初次上电能启动进入linux系统,超级终端能正常通讯。
然后断掉电源再次上电,就不能启动系统。超级终端无反应,有时会显示几个“”CCCC“”出来。
如果间隔2分钟再上电就可以正常启动和与超级终端正常通讯。
这是什么原因?

boyiee 发表于 2017-8-13 16:12:33

our2008 发表于 2017-8-13 15:50
请教自己做了一块底板,使用AM3358片子,初次上电能启动进入linux系统,超级终端能正常通讯。
然后断掉电 ...

这个可能是你DEBUG串口带电,导致AM335部分没有成功复位, 你试试完全断开外部电源和串口等带电的接口,可能就没问题了。 这时候加个门电路就可以搞定了。

所以有些自己做的分立电源专门用mos管搭个放电电路。

winterw 发表于 2017-8-13 16:50:26

楼主可以考虑使用ini, xml, json...这些都有开源的解析库,直接调用库接口就可以读写这些文件中对应的变量,具体怎么用你去搜一下然后试试就知道了。

our2008 发表于 2017-8-13 17:03:20

boyiee 发表于 2017-8-13 16:12
这个可能是你DEBUG串口带电,导致AM335部分没有成功复位, 你试试完全断开外部电源和串口等带电的接口, ...

是裸板测试,只接了调试串口和电源线,电源用的是一个工频变压器出来的线性稳压电源。
断开串口也是一样,至少间隔2分钟上电才能启动。

yangzi8000 发表于 2017-8-13 18:05:23

winterw 发表于 2017-8-13 16:50
楼主可以考虑使用ini, xml, json...这些都有开源的解析库,直接调用库接口就可以读写这些文件中对应的变量 ...

谢谢我去试试

dr2001 发表于 2017-8-13 19:00:58

怎么做取决于需求。

主文件系统内保存是容量最大,最常见的做法。
缺点是文件系统/eMMC/SD崩了设置参数就丢;需要做接口用于在现场/量产时设置。

略微好点的是用SPI Flash等一级引导存储器,RAW或者写在DTB里。
比较适合保存出厂的标定参数等不经常变的配置;否则更新的时候要当心。

IIC的EEPROM是最独立的方案。
优点是和系统独立,在量产/现场用外部接口操作也方便。
缺点是自己不加密,参数是明文;数据读写速度慢。

maoxue121225 发表于 2017-8-14 07:56:07

linux带文件系统很方便的,如果参数不多可以放在一个文件里面。

shijianzhou 发表于 2017-8-14 09:50:44

用xml文件方式,随便网上找个开源的xml库,然后就可以指定写参数和内容了很方便。
如果觉得文件不放心,那就sqlite数据库吧。稳妥些。SQL语句也很好写的。

yangzi8000 发表于 2017-8-14 14:14:26

本帖最后由 yangzi8000 于 2017-8-14 14:36 编辑

shijianzhou 发表于 2017-8-14 09:50
用xml文件方式,随便网上找个开源的xml库,然后就可以指定写参数和内容了很方便。
如果觉得文件不放心,那 ...

请教下,这个是不是需要把libxml2库移植到文件系统中,然后再把文件系统重新编译一遍,再把新的文件系统镜像下载到开发板上去??这样继续编程才能用

shijianzhou 发表于 2017-8-14 14:40:39

yangzi8000 发表于 2017-8-14 14:14
请教下,这个是不是需要把libxml2库移植到文件系统中,然后再把文件系统重新编译一遍,再把新的文件系统 ...

不用,xml解析的代码放到你的应用代码里面。对于linux来讲还是操作普通文件而已。
页: [1]
查看完整版本: 请教linux板子如何存储初始化参数