###遇到的各种坑###(Asymptote——站在巨人的肩膀上编写一个属于自己的linux操作系统!)

 

这篇文章专门记录一下编写代码过程中遇到的各种问题。

(以后改代码切忌一次改的太多,可以改一点在板子上测试一点,成功了再继续进行!!!!!!!!!)

 

2019.01.05——

1. c语言和汇编语言的互相调用,变量的相互引用问题

2.  链接脚本中的变量与c语言和汇编语言的互相调用问题

3. 代码的下载地址、链接地址、运行地址的区别

4. 基于汇编语言,需要重新审视c语言的指针                              

 

2019.01.06——

     执行任务切换时,仿照https://blog.csdn.net/jgw2008/article/category/6215030,姜广伟的文章就可以执行成功,他的实现主要是固定了地址;

     我用c语言定义的变量,就不可以执行成功,我想了想,这里主要的区别应该是,上面的是直接操作地址,而我是用的c语言编译器给分配的地址,两者应该会存在差别,具体原因不清楚,还是应该多看看汇编与c语言的代码对照,可以写一个简单的c代码,然后编译成汇编代码,两者对比一下。

 

2019.01.09——

     执行任务切换的时候,task_struct结构体定义为数组形式    struct  task_struct  task[64];  取其中的[0]、[1],任务切换不成功,

在结构体的初始值一样的情况下,定义为 struct  task_struct  task1;     struct  task_struct  task2;  就可以执行成功,原因不解,先记录下来。

 

2019.01.10——

    今天在调试任务切换的时候,发现给struct  task_struct 结构体指针赋绝对地址(如0x00000ff4)的时候,不能写成强转成(struct task_struct *)的形式,否则会执行失败。

 

######不同.bin的链接脚本中的链接起始地址不要相同,应该和他的运行地址保持一样,因为之前写成一样导致程序运行会出现意想不到的问题(当时是任务切换时,一个任务的lcd图案不能显示)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值