| | 10 | Le cours est organisé autour de la réalisation pratique d'un OS embarqué multi-tâches compatible POSIX. |
| | 11 | |
| | 12 | Les TME consistent à écrire, à partir de rien ou presque, les différents composants du système d'exploitation. Celui-ci est mis au point en simulation sur un SOC modélisé en SystemC en utilisant la plate-forme de modélisation SoCLib, et composé de 4 processeurs mips32, d'une mémoire, d'un timer, d'un multi-tty (terminal), d'un contrôleur video, d'un contrôleur de disque et d'un dma. La progression que vous allez suivre : |
| | 13 | |
| | 14 | * Un noyau d'OS qui virtualise le processeur, sans communication entre les taches, sans partage de devices mais avec une HAL. |
| | 15 | * Ajout des communication intertaches, partage de devices: mécanisme de file d'attente et événements. |
| | 16 | * user land : ABI kernel (liste des syscall) + phthread + dietlibc + compilation séparée. |
| | 17 | |
| | 18 | La figure et le tableau ci-après représentent l'architecture du SOC et le placement des mémoires et périphériques dans l'espace d'adressage physique. |
| | 19 | |
| | 20 | [[Image(plateforme.png,480px,nolink)]] |
| | 21 | {{{ |
| | 22 | #!html |
| | 23 | <table cellspacing="0" cellpadding="3" border="1" summary="Segments"> |
| | 24 | <tr> |
| | 25 | <td align=center><font size=-2><b>Périphériques</font></td> |
| | 26 | <td align=center><font size=-2><b>Segments dans la ROM</font></td> |
| | 27 | <td align=center><font size=-2><b>Segments dans la RAM</font></td> |
| | 28 | </tr> |
| | 29 | <tr> |
| | 30 | <td> |
| | 31 | <table cellspacing="0"> |
| | 32 | <tr><td><font size=-2> TIMER_BASE </font></td><td><font size=-2> 0xd3200000 </font></td></tr> |
| | 33 | <tr><td><font size=-2> TIMER_SIZE </font></td><td><font size=-2> 0x00000080 </font></td></tr> |
| | 34 | <tr><td><font size=-2> ICU_BASE </font></td><td><font size=-2> 0xd2200000 </font></td></tr> |
| | 35 | <tr><td><font size=-2> ICU_SIZE </font></td><td><font size=-2> 0x00000020 </font></td></tr> |
| | 36 | <tr><td><font size=-2> DMA_BASE </font></td><td><font size=-2> 0xd1200000 </font></td></tr> |
| | 37 | <tr><td><font size=-2> DMA_SIZE </font></td><td><font size=-2> 0x00000014 </font></td></tr> |
| | 38 | <tr><td><font size=-2> TTY_BASE </font></td><td><font size=-2> 0xd0200000 </font></td></tr> |
| | 39 | <tr><td><font size=-2> TTY_SIZE </font></td><td><font size=-2> 0x00000040 </font></td></tr> |
| | 40 | <tr><td><font size=-2> BD_BASE </font></td><td><font size=-2> 0xd5200000 </font></td></tr> |
| | 41 | <tr><td><font size=-2> BD_SIZE </font></td><td><font size=-2> 0x20 </font></td></tr> |
| | 42 | </table> |
| | 43 | </td> |
| | 44 | <td> |
| | 45 | <table cellspacing="0"> |
| | 46 | <tr><td><font size=-2> KTEXT_LMA_BASE </font></td><td><font size=-2> 0xbf800000 </font></td></tr> |
| | 47 | <tr><td><font size=-2> KTEXT_LMA_SIZE </font></td><td><font size=-2> 0x00020000 </font></td></tr> |
| | 48 | <tr><td><font size=-2> KDATA_LMA_BASE </font></td><td><font size=-2> 0xbf820000 </font></td></tr> |
| | 49 | <tr><td><font size=-2> KDATA_LMA_SIZE </font></td><td><font size=-2> 0x00020000 </font></td></tr> |
| | 50 | <tr><td><font size=-2> UTEXT_LMA_BASE </font></td><td><font size=-2> 0xbf840000 </font></td></tr> |
| | 51 | <tr><td><font size=-2> UTEXT_LMA_SIZE </font></td><td><font size=-2> 0x00060000 </font></td></tr> |
| | 52 | <tr><td><font size=-2> UDATA_LMA_BASE </font></td><td><font size=-2> 0xbf8A0000 </font></td></tr> |
| | 53 | <tr><td><font size=-2> UDATA_LMA_SIZE </font></td><td><font size=-2> 0x00020000 </font></td></tr> |
| | 54 | <tr><td><font size=-2> BOOT_BASE </font></td><td><font size=-2> 0xbfc00000 </font></td></tr> |
| | 55 | <tr><td><font size=-2> BOOT_SIZE </font></td><td><font size=-2> 0x00001000 </font></td></tr> |
| | 56 | </table> |
| | 57 | </td> |
| | 58 | <td> |
| | 59 | <table cellspacing="0"> |
| | 60 | <tr><td><font size=-2> RAM_BASE </font></td><td><font size=-2> 0x7F400000 </font></td></tr> |
| | 61 | <tr><td><font size=-2> RAM_SIZE </font></td><td><font size=-2> 0x01000000 </font></td></tr> |
| | 62 | <tr><td><font size=-2> KTEXT_BASE </font></td><td><font size=-2> 0x80000000 </font></td></tr> |
| | 63 | <tr><td><font size=-2> KDATA_BASE </font></td><td><font size=-2> 0x80020000 </font></td></tr> |
| | 64 | <tr><td><font size=-2> KDATA_SIZE </font></td><td><font size=-2> 0x003E0000 </font></td></tr> |
| | 65 | <tr><td><font size=-2> USR_TEXT_BASE </font></td><td><font size=-2> 0x7F400000 </font></td></tr> |
| | 66 | <tr><td><font size=-2> USR_DATA_BASE </font></td><td><font size=-2> 0x7F460000 </font></td></tr> |
| | 67 | <tr><td><font size=-2> USR_DATA_SIZE </font></td><td><font size=-2> 0X00B9F000 </font></td></tr> |
| | 68 | <tr><td><font size=-2> </font></td><td><font size=-2> </font></td></tr> |
| | 69 | <tr><td><font size=-2> </font></td><td><font size=-2> </font></td></tr> |
| | 70 | </table> |
| | 71 | </td> |
| | 72 | </tr> |
| | 73 | </table> |
| | 74 | }}} |
| | 75 | || |
| 20 | | Le cours est organisé autour de la réalisation pratique d'un OS embarqué multi-tâches compatible POSIX. |
| 21 | | |
| 22 | | Les TME consistent à écrire, à partir de rien ou presque, les différents composants du système d'exploitation. Celui-ci est mis au point en simulation sur un SOC modélisé en SystemC en utilisant la plate-forme de modélisation SoCLib, et composé de 4 processeurs mips32, d'une mémoire, d'un timer, d'un multi-tty (terminal), d'un contrôleur video, d'un contôleur de disque et d'un dma. La progression que vous allez suivre : |
| 23 | | |
| 24 | | * Un noyau d'OS qui virtualise le processeur, sans communication entre les taches, sans partage de devices mais avec une HAL. |
| 25 | | * Ajout des communication intertaches, partage de devices: mécanisme de file d'attente et événements. |
| 26 | | * user land : ABI kernel (liste des syscall) + phthread + dietlibc + compilation séparée. |
| 27 | | * Gestion des fichier, buffer cache. |
| 28 | | |
| 29 | | [[Image(plateforme.png,650px,nolink)]] |
| 30 | | |
| 31 | | Le tableau ci-après définit le placement des mémoires et les périphériques dans l'espace d'adressage physique. |
| 32 | | {{{ |
| 33 | | #!html |
| 34 | | <table> |
| 35 | | <table cellspacing="0" cellpadding="5" border="1" summary="Segments"> |
| 36 | | <tr> |
| 37 | | <td align=center><b>Périphériques</td> |
| 38 | | <td align=center><b>Segments dans la ROM</td> |
| 39 | | <td align=center><b>Segments dans la RAM</td> |
| 40 | | <tr> |
| 41 | | <td> |
| 42 | | <table> |
| 43 | | <tr><td> TIMER_BASE </td><td> 0xd3200000 </td></tr> |
| 44 | | <tr><td> TIMER_SIZE </td><td> 0x00000080 </td></tr> |
| 45 | | <tr><td> ICU_BASE </td><td> 0xd2200000 </td></tr> |
| 46 | | <tr><td> ICU_SIZE </td><td> 0x00000020 </td></tr> |
| 47 | | <tr><td> DMA_BASE </td><td> 0xd1200000 </td></tr> |
| 48 | | <tr><td> DMA_SIZE </td><td> 0x00000014 </td></tr> |
| 49 | | <tr><td> TTY_BASE </td><td> 0xd0200000 </td></tr> |
| 50 | | <tr><td> TTY_SIZE </td><td> 0x00000040 </td></tr> |
| 51 | | <tr><td> BD_BASE </td><td> 0xd5200000 </td></tr> |
| 52 | | <tr><td> BD_SIZE </td><td> 0x20 </td></tr> |
| 53 | | </table> |
| 54 | | </td><td> |
| 55 | | <table> |
| 56 | | <tr><td> KTEXT_LMA_BASE </td><td> 0xbf800000 </td></tr> |
| 57 | | <tr><td> KTEXT_LMA_SIZE </td><td> 0x00020000 </td></tr> |
| 58 | | <tr><td> KDATA_LMA_BASE </td><td> 0xbf820000 </td></tr> |
| 59 | | <tr><td> KDATA_LMA_SIZE </td><td> 0x00020000 </td></tr> |
| 60 | | <tr><td> UTEXT_LMA_BASE </td><td> 0xbf840000 </td></tr> |
| 61 | | <tr><td> UTEXT_LMA_SIZE </td><td> 0x00060000 </td></tr> |
| 62 | | <tr><td> UDATA_LMA_BASE </td><td> 0xbf8A0000 </td></tr> |
| 63 | | <tr><td> UDATA_LMA_SIZE </td><td> 0x00020000 </td></tr> |
| 64 | | <tr><td> BOOT_BASE </td><td> 0xbfc00000 </td></tr> |
| 65 | | <tr><td> BOOT_SIZE </td><td> 0x00001000 </td></tr> |
| 66 | | </table> |
| 67 | | </td><td> |
| 68 | | <table> |
| 69 | | <tr><td> RAM_BASE </td><td> 0x7F400000 </td></tr> |
| 70 | | <tr><td> RAM_SIZE </td><td> 0x01000000 </td></tr> |
| 71 | | <tr><td> KTEXT_BASE </td><td> 0x80000000 </td></tr> |
| 72 | | <tr><td> KDATA_BASE </td><td> 0x80020000 </td></tr> |
| 73 | | <tr><td> KDATA_SIZE </td><td> 0x003E0000 </td></tr> |
| 74 | | <tr><td> USR_TEXT_BASE </td><td> 0x7F400000 </td></tr> |
| 75 | | <tr><td> USR_DATA_BASE </td><td> 0x7F460000 </td></tr> |
| 76 | | <tr><td> USR_DATA_SIZE </td><td> 0X00B9F000 </td></tr> |
| 77 | | <tr><td> </td><td> </td></tr> |
| 78 | | <tr><td> </td><td> </td></tr> |
| 79 | | </table> |
| 80 | | </tr> |
| 81 | | </table> |
| 82 | | }}} |
| | 86 | * [htdocs:2011_mi074_1_intro.pdf Introduction] |
| | 87 | * [htdocs:2011_mi074_2_hello.pdf Hello World] |
| | 88 | |