Linux Kernel의 Embedded 관련 요구사항?

권순선의 이미지

혹시 embedded 환경에서 Linux를 적용하여 개발하시다가 '아 커널에 이런 기능이 있으면 참 좋을텐데...'라고 생각하신 것이 있으시면 좀 알려 주세요.

가능하다면 http://www.gnome.org/bounties/ 에 있는 형식으로 최대한 구체적으로 적을 수 있으면 더 좋겠습니다.

Linux가 어떠한 부분에서 embedded 환경을 위해 더 향상될 필요가 있는지도 알 수 있을 테고... 커널 쪽으로 오픈소스 프로젝트를 해보고 싶어하시는 분이 계신다면 이러한 요구사항들을 반영하는 프로젝트를 진행하실 수도 있을 것입니다. :-)

댓글

ulsiguya의 이미지

권순선 wrote:
http://www.gnome.org/bounties/ 에 있는 형식으로 최대한 구체적으로 적을 수 있으면 더 좋겠습니다.

위의 형식으로 구체적으로 적고 싶지만... 먼저 생각나는 것을 간단하게 적어도 되겠죠? :wink:

전 개인적으로 하는 일에 RTOS와 Linux를 프로젝트에 따라 선택해서 사용합니다... 부족한 점을 나열하다보면 당연히 RTOS와 비교를 하게 되는데, 간혹 비교하면서 서로 다른 영역을 비교하는것은 아닌가 생각을 합니다.

그럼에도 불구하고 좀 개선되었으면 하는 사항을 나열하면,

1. kernel image 가 작으면 좋겠습니다. Ethernet 하나 정도 가지고 있는 PDA 기능을 수용할 수 있는 커널의 크기가 적어도 압축을 하지 않은 상태에서 1M 안쪽에 들어가면 좋겠습니다.

2. 부팅속도가 빠르면 좋겠습니다. (약 200MHz ARM9에서 약 5초 안에...)

3. Ramdisk가 있어야 하는것이 부담스럽습니다. 크기를 줄여도 압축하지 않은 상태로 2M 이하고 줄이기 어렵습니다.

4. 적어도 5msec 정도의 정확성을 나타내는 periodic timer (timer SIGNAL과 같은)가 있으면 좋겠습니다. (다시말하면 특별히 timer 기능을 할 수 있는 디바이스와 드라이버를 만들어주지 않아도 기본 API로 나와 있었으면.... 혹시 좋은 방법이 현재도 있나요?)

5. posix thread에 task resume과 suspend 기능이 있으면 좋겠습니다. 물론 mutex를 이용해서 구현할 수 있지만, 다른 RTOS를 사용하다가 보면 왜 위의 두가지 기능이 없는지 의문이 생깁니다...

6. multiple event를 기다릴수 있으면 좋겠습니다. 간단하게 conditinal variable을 이용해서 blocking mode multiple event waiting을 구현하기가 까다롭습니다.

또 생각이.... 예전에는 생각이 많이 났는데요...

괜히 개발중 갑갑했던 푸념만 늘어놓네요.. ==33

엠브리오의 이미지

>1. kernel image 가 작으면 좋겠습니다. Ethernet 하나 정도 가지고 있는 PDA 기능을 수용할 수 있는 커널의 크기가 적어도 압축을 하지 않은 상태에서 1M 안쪽에 들어가면 좋겠습니다.

커널 크기를 줄이는건 어려워보이는군요. 압축을 해서 아무리 줄여도 600~800 Kbyte 이니 압축 하지 않은 상태로 1 Mbyte 미만은 힘들어 보입니다.

>2. 부팅속도가 빠르면 좋겠습니다. (약 200MHz ARM9에서 약 5초 안에...)

커널 부팅시 CRC 첵크 하는 부분을 빼면 시간을 많이 줄일수 있습니다. UI 빼면 3~4초 안에도 부팅 가능한 걸로 압니다.

3. Ramdisk가 있어야 하는것이 부담스럽습니다. 크기를 줄여도 압축하지 않은 상태로 2M 이하고 줄이기 어렵습니다.

램디스크를 쓰지 않으면 되는거 아닐런지? 물론 NOR 및 NAND가 넉넉해야 하겠지만..

> 4. 적어도 5msec 정도의 정확성을 나타내는 periodic timer (timer SIGNAL과 같은)가 있으면 좋겠습니다. (다시말하면 특별히 timer 기능을 할 수 있는 디바이스와 드라이버를 만들어주지 않아도 기본 API로 나와 있었으면.... 혹시 좋은 방법이 현재도 있나요?)

커널 2.6.18 부터 TimeSys의 Real-Time 기능이 추가되었습니다. 그렇다고 해도 대충 콘트롤 할수 있는 수준은 10ms 정도 레벨인것으로 압니다. 5ms 이하라면 RTLinux 나 다른걸 생각해보시는게 나을겁니다.

>5. posix thread에 task resume과 suspend 기능이 있으면 좋겠습니다. 물론 mutex를 이용해서 구현할 수 있지만, 다른 RTOS를 사용하다가 보면 왜 위의 두가지 기능이 없는지 의문이 생깁니다...

thread 는 제가 잘 몰라서 통과..

>6. multiple event를 기다릴수 있으면 좋겠습니다. 간단하게 conditinal variable을 이용해서 blocking mode multiple event waiting을 구현하기가 까다롭습니다.

libevent 에서 안되는 기능인가요? 이것도 잘 모르는 분야이므로 pass..

또 생각이.... 예전에는 생각이 많이 났는데요...

괜히 개발중 갑갑했던 푸념만 늘어놓네요.. ==33

익명 사용자의 이미지

커널 다이어트의 한계는 몇까지 갈까요?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.