由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
CS版 - 高人指点怎么在embedded sys(atmel 系列)上写内存管理
相关主题
what happens to a TCP connection if one packet keeps dropping?SW system development Engineer (lead position)
询问一个Big O notation的问题求教:data structure 经典入门书籍
标识符真的不能带空格么?Can anyone recommend a book for learning Real Time Operating Systems (RTOS)
C里面的动态数组是放在栈里还是堆里?求推荐比较好的embedded OS相关的学习资料
Help for C language什么样的device需要操作系统呢?
Two interview questions? (转载)Valgrind报uninitialized value was created by a heap allocat (转载)
看看 North Korea 的 CS 成果吧在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的设计?
讨论一下:Bill Gates这句话有没有道理一个程序的小问题
相关话题的讨论汇总
话题: 内存话题: 管理话题: atmel话题: 4k话题: malloc
进入CS版参与讨论
1 (共1页)
s********k
发帖数: 6180
1
Datasheet 上写明了internal RAM的起始地址,一共4K,从来没有自己处理过内存管理
问题,现在想写一个简单的内存管理,就是实现malloc,free一类的功能。初步决定用
链表,每个struct表示自己这一块的地址大小和下一块的地址。但是不知道不知道这里
面还有没有stack,heap,static一类的概念,比如在这4K的RAM上,怎么保证我开的内
存和static常量,或者bss字段的未初始化常量不冲突,还是直接内存顺序读取就是了
(4K相当于一个heap,我再自己划分小块)。对OS有一些了解但是不是很熟,请教了
a****l
发帖数: 8211
2
你有什么东西必须要动态内存?一般这种东西都用静态内存的.

【在 s********k 的大作中提到】
: Datasheet 上写明了internal RAM的起始地址,一共4K,从来没有自己处理过内存管理
: 问题,现在想写一个简单的内存管理,就是实现malloc,free一类的功能。初步决定用
: 链表,每个struct表示自己这一块的地址大小和下一块的地址。但是不知道不知道这里
: 面还有没有stack,heap,static一类的概念,比如在这4K的RAM上,怎么保证我开的内
: 存和static常量,或者bss字段的未初始化常量不冲突,还是直接内存顺序读取就是了
: (4K相当于一个heap,我再自己划分小块)。对OS有一些了解但是不是很熟,请教了

s********k
发帖数: 6180
3
比如我想做动态的malloc之类的。这个还是需要的吧

【在 a****l 的大作中提到】
: 你有什么东西必须要动态内存?一般这种东西都用静态内存的.
a****l
发帖数: 8211
4
你做什么东西需要动态malloc呢?很多比这复杂的多的系统都是不用malloc的.

【在 s********k 的大作中提到】
: 比如我想做动态的malloc之类的。这个还是需要的吧
s********k
发帖数: 6180
5
做一个网络,节点数不同需要的资源不同,所以想用动态分配的方法。稍微大一点的系
统都需要动态内存分配机制吧

【在 a****l 的大作中提到】
: 你做什么东西需要动态malloc呢?很多比这复杂的多的系统都是不用malloc的.
a****l
发帖数: 8211
6
其实也不一定,因为这种系统一般是专门做一件事的,所以需要的资源往往是能预先估计
的,而且不用动态分配能避免很多问题.
atmel的芯片你应该可以用他们推荐的编译器,avr toolchain, winavr,好象是已经有
malloc的了.前两天刚刚看到include文件里有malloc,所以估计人家已经做好的了.

【在 s********k 的大作中提到】
: 做一个网络,节点数不同需要的资源不同,所以想用动态分配的方法。稍微大一点的系
: 统都需要动态内存分配机制吧

s********k
发帖数: 6180
7
确实有,我已经用过,但是项目原来可能需要自己做一个,不知道这么小的内存里面是
否还需要处理stack,heap,BSS之类的。还是直接就一个大内存。

【在 a****l 的大作中提到】
: 其实也不一定,因为这种系统一般是专门做一件事的,所以需要的资源往往是能预先估计
: 的,而且不用动态分配能避免很多问题.
: atmel的芯片你应该可以用他们推荐的编译器,avr toolchain, winavr,好象是已经有
: malloc的了.前两天刚刚看到include文件里有malloc,所以估计人家已经做好的了.

a****l
发帖数: 8211
8
既然人家已经有了,你为什么还要自己做呢?各种处理器只是配置不同,但是既然你是用
相同的编译器应该总是用相同的库函数的.
顺便问一下,你怎么决定stack的大小的?好象是要自己定义大小的,太小了就完蛋了,太
大了就浪费.

【在 s********k 的大作中提到】
: 确实有,我已经用过,但是项目原来可能需要自己做一个,不知道这么小的内存里面是
: 否还需要处理stack,heap,BSS之类的。还是直接就一个大内存。

s********k
发帖数: 6180
9
我也不知道怎么决定stack的大小,所以才发帖问,现在我只是做一些任务调度的工作
。中断之后正在进行的任务就放弃,但是如果想实现中断context switch之类的高级一
些功能,应该需要自己设计内存管理,主要想的就是这个方面的。

【在 a****l 的大作中提到】
: 既然人家已经有了,你为什么还要自己做呢?各种处理器只是配置不同,但是既然你是用
: 相同的编译器应该总是用相同的库函数的.
: 顺便问一下,你怎么决定stack的大小的?好象是要自己定义大小的,太小了就完蛋了,太
: 大了就浪费.

z*****n
发帖数: 7639
10
设置compiler参数,保证其他变量的地址分配不在
你的堆上。

【在 s********k 的大作中提到】
: Datasheet 上写明了internal RAM的起始地址,一共4K,从来没有自己处理过内存管理
: 问题,现在想写一个简单的内存管理,就是实现malloc,free一类的功能。初步决定用
: 链表,每个struct表示自己这一块的地址大小和下一块的地址。但是不知道不知道这里
: 面还有没有stack,heap,static一类的概念,比如在这4K的RAM上,怎么保证我开的内
: 存和static常量,或者bss字段的未初始化常量不冲突,还是直接内存顺序读取就是了
: (4K相当于一个heap,我再自己划分小块)。对OS有一些了解但是不是很熟,请教了

相关主题
Two interview questions? (转载)SW system development Engineer (lead position)
看看 North Korea 的 CS 成果吧求教:data structure 经典入门书籍
讨论一下:Bill Gates这句话有没有道理Can anyone recommend a book for learning Real Time Operating Systems (RTOS)
进入CS版参与讨论
z*****n
发帖数: 7639
11
参考一些RTOS对不同microcontroller的porting中
是如何对heap进行管理的。
如果你是准备在atmega128这样只有4kram的系统上
用,我的建议是别用动态内存,用静态数组。你在
内存管理上耗费的资源对于4kram来讲太大。
我搞过atmega128+cc2420的平台,多跳路由协议,
全网同步功能,内存很紧张。

【在 s********k 的大作中提到】
: 我也不知道怎么决定stack的大小,所以才发帖问,现在我只是做一些任务调度的工作
: 。中断之后正在进行的任务就放弃,但是如果想实现中断context switch之类的高级一
: 些功能,应该需要自己设计内存管理,主要想的就是这个方面的。

s********k
发帖数: 6180
12
你不知道节点数目情况下怎么开辟静态内存的大小呢?

【在 z*****n 的大作中提到】
: 参考一些RTOS对不同microcontroller的porting中
: 是如何对heap进行管理的。
: 如果你是准备在atmega128这样只有4kram的系统上
: 用,我的建议是别用动态内存,用静态数组。你在
: 内存管理上耗费的资源对于4kram来讲太大。
: 我搞过atmega128+cc2420的平台,多跳路由协议,
: 全网同步功能,内存很紧张。

z*****n
发帖数: 7639
13
节点数不等于traffic volumn。
我们用的cross layer design,所有层的
packet buffer共用一块数组,各层之间
的buffer靠指针带入进数组形成一个单向
链表。

【在 s********k 的大作中提到】
: 你不知道节点数目情况下怎么开辟静态内存的大小呢?
s********k
发帖数: 6180
14
总共有多少packet你能估计吗?就是开一个比如20个packet的大小的数组?

【在 z*****n 的大作中提到】
: 节点数不等于traffic volumn。
: 我们用的cross layer design,所有层的
: packet buffer共用一块数组,各层之间
: 的buffer靠指针带入进数组形成一个单向
: 链表。

z*****n
发帖数: 7639
15
20个对一般的应用足够了。
这个跟你的网络协议规则有关。
如果一个中间节点需要buffer所有下游节点的
数据包在以后某个特定时段(比如使用了传输
scheduling,TDMA,或者sleeping),那么这
个中间节点就不能承载很多下游节点,这也是
为什么zigbee里面对网络depth和children size
有限制的原因。

【在 s********k 的大作中提到】
: 总共有多少packet你能估计吗?就是开一个比如20个packet的大小的数组?
s********k
发帖数: 6180
16
实际上就是各层的packet都是公用一个buffer,靠指针控制packet header提取自己
layer的包?

【在 z*****n 的大作中提到】
: 节点数不等于traffic volumn。
: 我们用的cross layer design,所有层的
: packet buffer共用一块数组,各层之间
: 的buffer靠指针带入进数组形成一个单向
: 链表。

z*****n
发帖数: 7639
17
you are right.

【在 s********k 的大作中提到】
: 实际上就是各层的packet都是公用一个buffer,靠指针控制packet header提取自己
: layer的包?

1 (共1页)
进入CS版参与讨论
相关主题
一个程序的小问题Help for C language
内推Amazon FW engineer positions (转载)Two interview questions? (转载)
[转载] 问个mesh网络中的router问题看看 North Korea 的 CS 成果吧
How to get TCP delay variation (jitter)讨论一下:Bill Gates这句话有没有道理
what happens to a TCP connection if one packet keeps dropping?SW system development Engineer (lead position)
询问一个Big O notation的问题求教:data structure 经典入门书籍
标识符真的不能带空格么?Can anyone recommend a book for learning Real Time Operating Systems (RTOS)
C里面的动态数组是放在栈里还是堆里?求推荐比较好的embedded OS相关的学习资料
相关话题的讨论汇总
话题: 内存话题: 管理话题: atmel话题: 4k话题: malloc