嵌入式开发阶段总结(2018.4)

1. C语言调用的mysqlAPI中mysql_real_query()一直执行失败
解决方法:检查代码的时候发现在fork()之前调用了mysql_init(),这导致在分成多进程之后,mysql的connection被争用,出现了多个进程争抢临界资源的现象,导致sql无法正常执行,报出的错误码也在用户手册中查不到。后来把mysql_ini()放到对应的单个进程中,程序运行正常。

2. 当一个进程的全局变量被声明为static之后,在.data段(已初始化)或者.bss段(未初始化)内,它只能在定义它的源文件内有效,其他源文件无法访问它。

比如我在“a.h”中声明了一个static变量,在“main.c”中对其进行了初始化,则该初始化的值只在“main.c”中有效,在其他源文件中无效。


3. mysql中将查询结果导出为csv格式的方法:
select content from table_name into
outfile 'secure_file_priv/file_name'
fields terminated by ','
optionally enclosed by '"'
escaped by '"'
lines terminated by '\r\n';

4. mysql导出文件时报错:ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

解决方法:在mysql中使用“show variables like '%secure%';”查看secure_file_priv路径,然后在导出语句中把导出路径修改为该目录即可。

※注:查看secure_file_priv的方法:show global variables like '%secure%'


5. ARM汇编语言中“!”的作用:

    ·指令:LDR r0, [r1, #100]

     含义:将r1+100中的值读入r0

    ·指令:LDR r0, [r1, #100]!

     含义:将r1+100中的值读入r0,并把r1+100写入r1

6. ARM指令集中:
    STR:字数据存储;LDR:字数据加载

7. X86指令集中:
    movzwl:零扩展、由2字节move到4字节

8. 交叉编译时报错:Value too large for defined data type
    源代码本身没问题,跟挂载属性有关。由于是用虚拟机运行的ubuntu,我在系统下面挂载了一个windows的文件夹,在其中编译源代码就会报如上的fatal error。但如果把它移动到ubuntu的文件系统中去,则编译通过。

猜你喜欢

转载自blog.csdn.net/qq_33924155/article/details/80158849
今日推荐