亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 5224 | 回復(fù): 17
打印 上一主題 下一主題

請問,有人在學(xué)習(xí)研究RTOS-uC/OS-II嗎? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-09-14 18:22 |只看該作者 |倒序瀏覽
作為開源的實時嵌入式OS,uC/OS-II在嵌入式應(yīng)用領(lǐng)域挺多的。可是我發(fā)現(xiàn)嵌入式論壇里沒有人提及這個系統(tǒng),不知道有人在學(xué)習(xí)這個沒?如果有,大家可以交流一下l

另外,有個小建議:嵌入式開發(fā)這個版塊能不能根據(jù)嵌入式OS進(jìn)行細(xì)化,畢竟嵌入式OS的主流還是不止一類的。

順便附上一個uC/OS-II的官方網(wǎng)站:http://www.micrium.com/

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [報告]
發(fā)表于 2008-09-14 18:36 |只看該作者
呵呵,這是我學(xué)習(xí)OS的入門操作系統(tǒng),基本上所有代碼都看過,希望一起交流

論壇徽章:
0
3 [報告]
發(fā)表于 2008-09-14 23:44 |只看該作者
樓上的哥們,你把這個系統(tǒng)的那些底層關(guān)系都縷順了沒有,很多東西看得我很頭大呀

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
4 [報告]
發(fā)表于 2008-09-15 09:04 |只看該作者
原帖由 kingink1983 于 2008-9-14 23:44 發(fā)表
樓上的哥們,你把這個系統(tǒng)的那些底層關(guān)系都縷順了沒有,很多東西看得我很頭大呀


呵呵,我也說不好,不過你沒搞明白的可以貼出來,這個OS我差不多搞了一年,短小精干的OS,還是挺不錯的。

論壇徽章:
0
5 [報告]
發(fā)表于 2008-09-16 11:07 |只看該作者
原帖由 dreamice 于 2008-9-14 18:36 發(fā)表
呵呵,這是我學(xué)習(xí)OS的入門操作系統(tǒng),基本上所有代碼都看過,希望一起交流

INT8U  const  OSUnMapTbl[] = {
    0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x00 to 0x0F                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x10 to 0x1F                             */
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x20 to 0x2F                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x30 to 0x3F                             */
    6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x40 to 0x4F                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x50 to 0x5F                             */
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x60 to 0x6F                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x70 to 0x7F                             */
    7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x80 to 0x8F                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x90 to 0x9F                             */
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xA0 to 0xAF                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xB0 to 0xBF                             */
    6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xC0 to 0xCF                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xD0 to 0xDF                             */
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xE0 to 0xEF                             */
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0        /* 0xF0 to 0xFF                             */
};

能幫忙告訴這個表示如何建立的嘛? 作者也沒說他的構(gòu)造思路

另外:在os——mem.c文件的OSMemCreate(……)函數(shù)中:
OS_MEM  *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *err)
{
#if OS_CRITICAL_METHOD == 3                           /* Allocate storage for CPU status register      */
    OS_CPU_SR  cpu_sr;
#endif   
    OS_MEM    *pmem;
    INT8U     *pblk;
    void     **plink;
    INT32U     i;


#if OS_ARG_CHK_EN > 0
    if (addr == (void *)0) {                          /* Must pass a valid address for the memory part. */
        *err = OS_MEM_INVALID_ADDR;
        return ((OS_MEM *)0);
    }
    if (nblks < 2) {                                  /* Must have at least 2 blocks per partition      */
        *err = OS_MEM_INVALID_BLKS;
        return ((OS_MEM *)0);
    }
    if (blksize < sizeof(void *)) {                   /* Must contain space for at least a pointer      */
        *err = OS_MEM_INVALID_SIZE;
        return ((OS_MEM *)0);
    }
#endif
    OS_ENTER_CRITICAL();
    pmem = OSMemFreeList;                             /* Get next free memory partition                */
    if (OSMemFreeList != (OS_MEM *)0) {               /* See if pool of free partitions was empty      */
        OSMemFreeList = (OS_MEM *)OSMemFreeList->OSMemFreeList;
    }
    OS_EXIT_CRITICAL();
    if (pmem == (OS_MEM *)0) {                        /* See if we have a memory partition             */
        *err = OS_MEM_INVALID_PART;
        return ((OS_MEM *)0);
    }
    plink = (void **)addr;                            /* Create linked list of free memory blocks      */
    pblk  = (INT8U *)addr + blksize;
    for (i = 0; i < (nblks - 1); i++) {
        *plink = (void *)pblk;
        plink  = (void **)pblk;
        pblk   = pblk + blksize;
    }
    *plink              = (void *)0;                  /* Last memory block points to NULL              */
    pmem->OSMemAddr     = addr;                       /* Store start address of memory partition       */
    pmem->OSMemFreeList = addr;                       /* Initialize pointer to pool of free blocks     */
    pmem->OSMemNFree    = nblks;                      /* Store number of free blocks in MCB            */
    pmem->OSMemNBlks    = nblks;
    pmem->OSMemBlkSize  = blksize;                    /* Store block size of each memory blocks        */
    *err                = OS_NO_ERR;
    return (pmem);
}
/*$PAGE*/

其中的pblk  = (INT8U *)addr + blksize;這個轉(zhuǎn)化,不會造成地址截斷嘛,畢竟addr所占的空間不止一個字節(jié)吧


[ 本帖最后由 kingink1983 于 2008-9-16 11:08 編輯 ]

論壇徽章:
0
6 [報告]
發(fā)表于 2008-09-16 12:38 |只看該作者
osek的干活。。。。。。

論壇徽章:
0
7 [報告]
發(fā)表于 2008-09-16 13:23 |只看該作者
原帖由 kingink1983 于 2008-9-14 18:22 發(fā)表
作為開源的實時嵌入式OS,uC/OS-II在嵌入式應(yīng)用領(lǐng)域挺多的?墒俏野l(fā)現(xiàn)嵌入式論壇里沒有人提及這個系統(tǒng),不知道有人在學(xué)習(xí)這個沒?如果有,大家可以交流一下l

另外,有個小建議:嵌入式開發(fā)這個版塊能不能根 ...


哈哈,
你所在的板塊是
首頁 &raquo; CU論壇 &raquo; Linux &raquo; 匯總貼列表 &raquo; 嵌入式開發(fā) &raquo;

論壇徽章:
0
8 [報告]
發(fā)表于 2008-09-16 13:34 |只看該作者
我覺得應(yīng)該開個實時嵌入式操作系統(tǒng)的板塊

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
9 [報告]
發(fā)表于 2008-09-16 14:01 |只看該作者

回復(fù) #5 kingink1983 的帖子

我簡單說一下關(guān)于這個表的作用及構(gòu)造算法(一次面試中被問到,慚愧沒答出來 )。
作用:找出優(yōu)先級最低位為1的位置。大家知道,優(yōu)先級越高,其數(shù)值越小,所以,在這里也即找出優(yōu)先級最高的位置。
算法:
(1)對于一個8位數(shù),如果是奇數(shù),那么最低位必為1,如00000001(十進(jìn)制1),00000101(十進(jìn)制5)……,所以,我們只需要計算偶數(shù)位即可;
(2)算出0——256中的偶數(shù)最低位為1的位置;(該算法也主要是這么一個實現(xiàn)了)
我把這個算法的c代碼貼在下面:

  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int OSUnMapTbl[256];
  5.         int i, j, k;
  6.         for(i = 0; i < 256; i ++) // initialize var
  7.         OSUnMapTbl[i]=0;
  8.         for(i = 2; i < 256; i += 2) // only calculate even numbers
  9.         {
  10.                 j = i;
  11.                 k = 0;
  12.                 do
  13.                 {
  14.                         j = j >> 1;
  15.                         k++;
  16.                 }while(j % 2 == 0);
  17.                 OSUnMapTbl[i] = k;
  18.         }
  19.         for(i = 1; i < 257; i ++) // print the result
  20.         {
  21.                 printf("%d,", OSUnMapTbl[i-1]);
  22.                 if(i % 16 == 0)
  23.                         printf("\n");
  24.         }
  25.         getchar(); // pause
  26.         return 0;
  27. }
復(fù)制代碼

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
10 [報告]
發(fā)表于 2008-09-16 14:07 |只看該作者
其中的pblk  = (INT8U *)addr + blksize;這個轉(zhuǎn)化,不會造成地址截斷嘛,畢竟addr所占的空間不止一個字節(jié)吧

我不知道你所說的地址截斷是什么意思,這里把a(bǔ)ddr轉(zhuǎn)換成無符號字符型的,然后加上blksize,意即pblk指向了addr+blksize的位置,addr只是一個指針,況且指針在不同的系統(tǒng)中所占的地址是不確定的32位系統(tǒng)是4個字節(jié),有些8位系統(tǒng)是三個字節(jié)。所以,我覺得和這個所謂的截斷沒有什么關(guān)系。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP