Mysql安装过程数据初始化出错?

 2024-02-02 05:02:13  阅读 0

文章底部附有学习资源,大家可以自行收藏。

文本

最后一个错误

Linux中有很多编程思想可以学习。 许多大佬将这些想法和机制应用到微控制器的编程中。 STM32模拟Linux的自动初始化过程。

通常我们写程序的时候都会遵循这个套路。 按照时序逻辑,一个又一个的函数被执行。

flash应用程序初始化错误_应用初始化失败_应用程序初始化错误怎么解决

如果逻辑很复杂,涉及的模块很多,那么顺序执行的代码就会很臃肿,模块之间的耦合也会非常紧密。 在Linux中,有各种各样的外设驱动程序,几乎不可能按逻辑顺序执行它们。

代码能有这么大的代码量,大而不乱,有效的将各个层次、各个模块分开,并且将大量的代码逻辑地组织在一起,这在这方面起到了至关重要的作用。

通过模仿这个方法,我们最终清晰了图中的主要功能代码,将这个逻辑分离出来,实现了同样的功能。

如何实现这样的功能需要一些背景知识:

1、程序代码的组织

2.链接脚本相关知识。

3.函数指针的应用。

flash应用程序初始化错误_应用程序初始化错误怎么解决_应用初始化失败

代码的组织如图,需要知道变量a、b和函数指针f、f2存放在程序的哪些段中。 可以看一下这个stm32启动代码实现 | C语言。 上面的a和f存放在bss节中,b和f2存放在data节中,因为已经给定了初始值,实现这个会把需要自动初始化的数据放到自定义的节中,这样作为。

如何放到具体的段中,需要使用(())关键字来改变数据存储段。

当前程序是使用这些段编译的。 除了.也是加上的,其他都是编译器默认的。

应用初始化失败_应用程序初始化错误怎么解决_flash应用程序初始化错误

首先添加一些代码:

flash应用程序初始化错误_应用程序初始化错误怎么解决_应用初始化失败

整理分享3年嵌入式物联网学习资源:C语言、Linux开发、数据结构; 软件开发、STM32单片机、ARM硬件开发、物联网通讯开发、综合项目开发教程资料; 笔试和面试问题。 点击下方插件即可免费获取↓↓↓

当然,这还不够。 您还需要告诉链接器 (LD) 链接 . 节到程序中,所以这节也需要修改。

flash应用程序初始化错误_应用初始化失败_应用程序初始化错误怎么解决

该部分按8字节对齐,定义了两个全局变量,这些数据按0-5的顺序链接。 通过这两个修改,我们来看看程序的各个部分。

如图:

应用初始化失败_应用程序初始化错误怎么解决_flash应用程序初始化错误

有一个额外的红框。 部分。 该段从除法开始总共8个字节。

我们来看看本段的具体情况以及使用工具。

和上面的size工具匹配,绿框的地址是(, 模式。)

因此通过修改链接脚本,将函数指针变量放置在. 部分。

那么如何调用这个函数和前面初始化数据段数据类似。 它会遍历这个段,然后取出函数地址,然后将段中的地址强制转换为函数指针,然后直接调用。

flash应用程序初始化错误_应用程序初始化错误怎么解决_应用初始化失败

应用程序初始化错误怎么解决_应用初始化失败_flash应用程序初始化错误

实现的图片是从 . 分段然后直接调用。 函数的地址和函数指针变量的地址很容易混淆。

如果代码这样修改的话,自动初始化功能确实可以调整,但是每次都要写这么长一段__((__,__("..0.init"))),心里不舒服。 传入linux宏来修改。

这个也一样。

flash应用程序初始化错误_应用初始化失败_应用程序初始化错误怎么解决

添加一些按程序逻辑顺序执行的宏

0、如初始化系统基本时钟

1、比如放一些CPU架构的初始化比如初始化NVIC。

2、外围模块的初始化,如i2c、flash、spi等。

3. 针对特定硬件板进行一些设置。

4、操作系统的一些设置,如文件系统、网络协议栈等。

5. 最后运行用户程序。

修改您自己的程序并使用宏代替。 这样,drop call就会按照0、1-5的顺序执行。

应用程序初始化错误怎么解决_应用初始化失败_flash应用程序初始化错误

flash应用程序初始化错误_应用程序初始化错误怎么解决_应用初始化失败

最后我们再看一下这段:

应用程序初始化错误怎么解决_应用初始化失败_flash应用程序初始化错误

应用程序初始化错误怎么解决_应用初始化失败_flash应用程序初始化错误

这样,只要在自动初始化函数中添加()、()之类的东西,它就会被自动调用,而不需要在main函数中一一执行。

比如i2c控制的初始化就放在中间。 下面挂着很多i2c从设备。 只需初始化每个从设备即可。 即使有新的来了,也用这个初始化就可以了。 不需要改变原来的高度。 分离模块之间的耦合程度。

这样就模​​拟了Linux初始化并验证是否成功,最后上传到库中。

原文来自:

//源/树///

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码