並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 23 件 / 23件

新着順 人気順

newlibの検索結果1 - 23 件 / 23件

  • 西暦3000年、地球外生命体はlinux kernelをコンパイルできるのか? - Qiita

    この問いかけにまじめに考えてみる。 ほぼ全てのソースコードってランタイムなりコンパイラとして何かしら別のものに依存しているはずだけど、最終的に行き着くだろうOSとかってそもそもGitHub上に存在するのかなhttps://t.co/KNME92Qcz8 — yuta (@yuta0381) July 18, 2020 TL;DR(要約) RISC-VだったらCPUから作れそう。エミュレータのコード見て自作もできそう。 RISC-Vだったら、多分linux動かすところまで行けるよ! x86とかだったら、動かそうとするけどライブラリ古くて苦しむよ! Linux Kernelだけ見ても、GitHub上にすべての依存する「最新の」コードは存在していない。若干古かったりするので、そこらへんは地球外生命体の人に頑張ってもらうしかない。 前提条件 西暦2500年、地球人類は滅亡した(唐突)。北極には、か

      西暦3000年、地球外生命体はlinux kernelをコンパイルできるのか? - Qiita
    • Rustで自作OSをしているときのデバッグ例 - syscall 命令と仲良くなりたい!前編 - /var/log/hikalium

      この記事は自作OS Advent Calendar 2022の17日目の記事です。他の記事も是非お楽しみください!(そして書ける方はぜひ参加してみてください!!) 前回(?)までのあらすじ hikaliumは自作OS上で動くアプリからsyscall命令を使ってシステムコールを呼べるようにしようと頑張っていたが、なぜか発生するトリプルフォルトによりQEMUが再起動してしまい、3時間のデバッグの末力尽きてしまった。一体なぜ例外が発生するのか、その謎を解くため、我々は数日の休息をとったのち、バイナリの森へと旅立った…。 前回(という名の配信アーカイブ): www.youtube.com 状況を整理しよう バイナリの森は危険だ。無闇に動きまわっては、x86の沼に足をとられて命を落としかねない。まずは我々の向かっていた先と、これまでに得た情報をまとめることにしよう。 どこへ向かっていたのか 我々のひ

        Rustで自作OSをしているときのデバッグ例 - syscall 命令と仲良くなりたい!前編 - /var/log/hikalium
      • 開発ツール(QEMU)への貢献(前半) 〜自作OSのいまと昔 [第3回] | さくらのナレッジ

        これまでの記事では、自作OSとそれを取り巻く状況について触れてきましたが、今回と次回は少し視点を変えて、自作OS開発で使うツールのデバッグや、それを通した貢献(contribute)の話をしたいと思います。 自作OSに限らず何かを開発する際には、たいていの場合、他の誰かが作ったツールを利用することになります。たとえば、CコンパイラとしてのClangや、デバッグのためのエミュレータとしてのQEMU, CやC++の標準ライブラリとしてのNewlibやlibc++などを、私の自作OS liumOS では利用しています。これらのソフトウエアは、ソースコードが公開されており、インターネット上の誰もが開発に参加することが可能です。 これらの開発ツールは、世界中のたくさんのユーザーに利用されるうちに、バグが見つかったり機能追加のリクエストが来たりすることで、完成度が次第に高まってきます。しかし、多くの人

          開発ツール(QEMU)への貢献(前半) 〜自作OSのいまと昔 [第3回] | さくらのナレッジ
        • Nature Remo開発におけるテストフレームワーク『Catch2』の活用方法を紹介します - Nature Engineering Blog

          3日目! Nature Engineering Blog祭3日目は、ファームウェアエンジニアの中林 (id:tomo-wait-for-it-yuki) がお送りします。みなさま、自動テストはお好きですか?私は大好きです。手動で何度も同じことをテストするのは苦痛ですが、それをプログラミングのタスクに転化できるとなれば、最高ですよね! 今回はNature Remoのファームウェア開発で使用しているユニットテストフレームワーク『Catch2』の活用方法を紹介します。ESP-IDFで使えるテンプレートプロジェクトも用意してありますので、少し長いですが、最後まで楽しく読んでいただけると嬉しいです。 Catch2 Catch2は (modern) C++で書かれたユニットテストフレームワークです。Nature RemoのファームウェアはC言語で書いていますが、テストフレームワークはC++で書かれたも

            Nature Remo開発におけるテストフレームワーク『Catch2』の活用方法を紹介します - Nature Engineering Blog
          • Unikernelについての現状調査 - Fixstars Tech Blog /proc/cpuinfo

            ※本記事の内容は、2020年2月の約1か月間のインターンシップにおける成果です。 Unikernelについて知っていますか? 私は知っています。 Unikernelとは、アプリケーションをライブラリOSの必要最小限の機能のみとリンクさせ、単一アドレス空間で、直接ハードウェア上やハイパーバイザ上にて動作するようにしたマシンイメージのことです。 本記事では、車載向けのマイコンなどの組み込みシステム上において、最小サイズのマシンイメージで目的の機能を実現することができる手段として、Unikernelという方向性に可能性を見出し、その概要と、2020年2月現在に現存しているUnikernelのプロジェクトについて調査しました。 Unikernelとは Unikernelという呼称は、2013年に発表された論文 Unikernels: Library Operating Systems for th

              Unikernelについての現状調査 - Fixstars Tech Blog /proc/cpuinfo
            • GitHub - picolibc/picolibc: picolibc - a C library designed for embedded 32- and 64- bit systems.

              Picolibc source comes from a variety of places and has a huge variety of copyright holders and license texts. While much of the code comes from Newlib, none of the GPL-related bits used to build the library are left in the repository, so all of the source code uses BSD-like licenses, a mixture of 2- and 3- clause BSD itself and a variety of other (mostly older) licenses with similar terms. There a

                GitHub - picolibc/picolibc: picolibc - a C library designed for embedded 32- and 64- bit systems.
              • ArmマイコンのRTOSとして充実する「Mbed OS」に一抹の不安

                IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第5回は、プロセッサコアIPベンダーのArmが独自に展開する「Mbed OS」を取り上げる。 ArmのリアルタイムOS(RTOS)「Mbed OS」は過去に何度か取り上げさせていただいた。最初は2014年のこちらの記事で、次いで2015年のこちらの記事、mbed 3.0の話、連載「IoT観測所」の第13回と第39回、そして2018年の「Mbed Linux OSに」絡んだ話といった具合だ。 加えて言うなら、2020年7月にArmがISG(IoTサービスグループ)を切り離すという報道があり、Mbed OSはどうなるのか? と思っていたら、最近になってロイターがこの計画が中止になったと報じている。これが事実ならまぁ一安心ではあるのだが、

                  ArmマイコンのRTOSとして充実する「Mbed OS」に一抹の不安
                • Rust製の組み込みOS『Tock』について調べてみた - 重力に縋るな

                  これは 自作OS Advent Calendar 2019 の9日目の記事です. はじめに 最近大人気ですよね,Rust. 全人類Rust書いとる...俺は... システムプログラミング言語ですし,LLVMを使っているので色々なアーキテクチャ向けにコンパイルできますし, 安全性を重視しているので,RustでOSが書けるようになると色々と面白そうです. とはいえ,なんだかんだでちゃんと使ってみようという気になれず,まだあまり書いたことがありません. そこで,今回はRustで書かれたOSであるTockを使って,モダンな言語でのOSの作り方やRustそのものについて調べてみようと思います. Tockとは TockはRustで書かれたCortex-MやRISC-Vで動く組み込みOSです. https://github.com/tock/tock 最近はSTM32でも動くらしいですね. https:

                    Rust製の組み込みOS『Tock』について調べてみた - 重力に縋るな
                  • X68000の開発環境について - Qiita

                    X68000 Z がにわかに注目を集めています。 これをきっかけに何か作ってみたくなった方のために、X68000(以下、X68k)の開発環境についてまとめてみました。 ネイティブ開発環境 X68kの実機、またはエミュレータのHuman68k上で動作する開発環境です。 X68k現役当時はこの環境しかありませんでしたが、今となっては、特に実機でCコンパイラを動かすのは速度的な意味で結構厳しそうです。エミュレータ上でCPUクロックを上げて使うのが良いと思います。 シャープ純正Cコンパイラ (XC) 概要 シャープから発売されていた純正の開発環境です。(商品名 C Compiler PRO-68K) Cコンパイラ、アセンブラ、リンカ、デバッガにライブラリ群など、ソフトウェア開発に必要なツール類一通りと、分厚い大量のマニュアルのセットでした。 開発者 シャープ株式会社 入手先 現在はソフトウェア本体

                      X68000の開発環境について - Qiita
                    • System Calls: RISCV OS in Rust

                      This is chapter 7 of a multi-part series on writing a RISC-V OS in Rust. Table of Contents → Chapter 6 → (Chapter 7) → Chapter 8 23 January 2020: Patreon only 29 January 2020: Public Video https://www.youtube.com/watch?v=6GW_jgkdGPw Overview System calls are a way for unprivileged, user applications to request services from the kernel. In the RISC-V architecture, we invoke the call using the ecall

                      • 第684回 UbuntuからRaspberry Pi Picoを使う | gihyo.jp

                        2021年の1月にRaspberry Piシリーズに「Raspberry Pi Pico」が追加されました。これは「マイコンボード」と呼ばれるカテゴリーの製品です。今回はUbuntu上でPico用のファームウェアをビルドし、Picoに書き込み、起動する手順を説明します。 Raspberry Pi Pico Raspberry Pi Picoは、これまでのRaspberry Piとは異なり「マイコンボード」とも呼ばれる、省電力・小サイズ・低コストなデバイスです。プロセッサーとしてデュアルコアのCortex-M0+(最大133MHz)に加えて、264KBのSRAMや2MBのFlash Memoryが搭載されています。結果的に、Debian/Ubuntuのような一般的なLinux OSは動作しません[1]⁠。 Raspberry Pi Picoのマイコンボードとしての特徴のひとつが余計な専用ツー

                          第684回 UbuntuからRaspberry Pi Picoを使う | gihyo.jp
                        • Release SDK 1.5.0 · raspberrypi/pico-sdk

                          This release contains new libraries and functionality, along with numerous bug fixes and documentation improvements. Highlights are listed below, or you can see the full list of individual commits here, and the full list of resolved issues here. Note, these release notes are long and may appear truncated in the "Releases" tab; you can see the full version here. New Board Support The following boar

                            Release SDK 1.5.0 · raspberrypi/pico-sdk
                          • 自作OSにprintfを実装する

                            概要 printfに代表される可変長引数関数の仕組みを調べ、muslの実装を読み、それを自作OSにフルスクラッチで実装するという試みです。タイトルにはprintfとありますが、現状自作OSにメモリ管理機能なんてない(mallocなんてない)のでまずvsnprintfを実装し、それを用いてprintf(もどき)を作ることにします。環境はx64を前提とします。 標準ライブラリで実装してみる 最終的にはフルスクラッチで実装しますが、完成形を見ておこうということで標準ライブラリを用いて実装してみます。 #include <stdio.h> #include <stdarg.h> #define BUF_SIZ 100 void myprintf(char *fmt, ...) { char buf[BUF_SIZ]; va_list ap; int ret; va_start(ap, fmt);

                              自作OSにprintfを実装する
                            • atoi関数のかしこい実装 - yohhoyの日記

                              C標準ライブラリ Muslのatoi関数実装 では、符号付き整数オーバーフロー回避のため負数範囲で10進数値を減算してゆき最後に符号反転を行っている。 int atoi(const char *s) { int n=0, neg=0; while (isspace(*s)) s++; switch (*s) { case '-': neg=1; case '+': s++; } /* Compute n as a negative number to avoid overflow on INT_MIN */ while (isdigit(*s)) n = 10 * n - (*s++ - '0'); return neg ? n : -n; } C言語の符号付き整数型(int)では “2の補数” 表現が用いられるため*1、最大値INT_MAXより最小値INT_MINの絶対値が 1 だけ大き

                                atoi関数のかしこい実装 - yohhoyの日記
                              • E2565 – 講演会「“あなた”はなぜ,図書館に行くのか」<報告>

                                講演会「“あなた”はなぜ,図書館に行くのか」<報告> 神戸・図書館ネットワーク・大西典子(おおにしのりこ) 2022年10月24日,同志社大学准教授の佐藤翔氏を迎え,神戸・図書館ネットワーク主催講演会「今,公共図書館を考えるPart10“あなた”はなぜ,図書館に行くのか~図書館利用の決定要因と図書館像・利用者像~」を開催した。COVID-19感染拡大による中止も乗り越え,企画から3年越しの開催となった。講師の佐藤氏は,〈仮称〉新三宮図書館整備検討会委員を務めるなど,神戸の図書館に関わっており,講演を依頼した。 私たち,神戸市立図書館を利用する市民による「神戸・図書館ネットワーク」は,同館応援団を称しているのだが,貸出以外に関して図書館のことを知らないことに気づいた。そこで,図書館への理解を深めるために「今,公共図書館を考える」をテーマに,学習会,講演会を重ねている。2000年の発足以来,1

                                  E2565 – 講演会「“あなた”はなぜ,図書館に行くのか」<報告>
                                • Rewriting m4vgalib in Rust - Cliffle

                                  2019-02-23 Executive summary Motivation Rust has a package manager On no_std On API design On binary size On memory safety Bounds checks On safety from data races If this isn’t your first time visiting my blog, you may recall that I’ve spent the past several years building an elaborate microcontroller graphics demo using C++. Over the past few months, I’ve been rewriting it — in Rust. This is an i

                                  • ESP-IDF v4.3でESP32のヒープ残量が10KB減る問題の調査 - Nature Engineering Blog

                                    ファームウェアエンジニアの中林 (id:tomo-wait-for-it-yuki) です。ESP32愛好家の皆様、ESP-IDF v4.3で次の変更が入ったことにお気づきでしょうか? Heap: Switched heap algorithm to one based on TLSF, improves performance especially when using a high number of allocations in PSRAM リリースノート1にさらっと1行だけ書かれていますが、「え?ヒープアロケータ変わったの?インパクト大きくない?」というのが最初の印象でした。本エントリではこのさらっと入った変更の、意外と大きな影響について解説して参りたいと思います。 本エントリの要点は次の通りです。 ESP-IDF v4.3からヒープアロケータがフリーリストアロケータからTLSFア

                                      ESP-IDF v4.3でESP32のヒープ残量が10KB減る問題の調査 - Nature Engineering Blog
                                    • 【macOS】ARMのGCCコンパイル環境を構築する(brewから公式「GNU Arm Embedded Toolchain」をインストール)

                                      「arm-none-eabi-gcc」パッケージを、下記コマンドでインストール。 $ brew update $ brew upgrade $ brew tap ArmMbed/homebrew-formulae $ brew install arm-none-eabi-gcc インストール完了したら、下記コマンドでコンパイラが実行できるか確認。 $ arm-none-eabi-gcc --version arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 8-2018-q4-major) 8.2.1 20181213 (release) [gcc-8-branch revision 267074] Copyright (C) 2018 Free Software Foundation, Inc. This is free so

                                        【macOS】ARMのGCCコンパイル環境を構築する(brewから公式「GNU Arm Embedded Toolchain」をインストール)
                                      • picolibc

                                        Picolibc Version 1.0 Released I wrote a couple of years ago about the troubles I had finding a good libc for embedded systems, and for the last year or so I've been using something I called 'newlib-nano', which was newlib with the stdio from avrlibc bolted on. That library has worked pretty well, and required very little work to ship. Now that I'm doing RISC-V stuff full-time, and am currently wor

                                        • Programming with RISC-V Vector Instructions

                                          Perhaps the most interesting part of the open RISC-V instruction set architecture (ISA) is the vector extension (RISC-V "V"). In contrast to the average single-instruction multipe-data (SIMD) instruction set, RISC-V vector instructions are vector length agnostic (VLA). Thus, a RISC-V "V" CPU is flexible in choosing a vector register size while RISC-V "V" binary code is portable between different C

                                          • Filesystems: RISCV OS in Rust

                                            This is chapter 10 of a multi-part series on writing a RISC-V OS in Rust. Table of Contents → Chapter 9 → (Chapter 10) → Chapter 11 4 May 2020: Patreon only 11 May 2020: Public Video & Reference Material I have taught operating systems at my university, so I will link my notes from that course here regarding the virt I/O protocol. This protocol has changed over the years, but the one that QEMU imp

                                            • Getting Graphical Output from our Custom RISC-V Operating System in Rust – Stephen Marz

                                              An operating system is used to make our job easier when using graphics. In our instance, in addition to everything else. In this post, we will be writing a GPU (graphics processing unit) driver using the VirtIO specification. In here, we will allow user applications to have a portion of the screen as RAM–with what is commonly known as a framebuffer. Contents OverviewPixels and ResolutionThe GPU Vi

                                              • Compiling History: A brief tour of C compilers

                                                Photo by Simon Kadula on UnsplashAs the story of C’s birth goes hand in hand with the creation of Unix, the first C compiler can be traced back to the early 1970’s. I've detailed the history of C in my previous article Tracing the Lines: From the Telephone to Unix, which includes a brief summary of this history. Around 1971, Ken decided that Unix needed to be ported to a higher level language. Den

                                                  Compiling History: A brief tour of C compilers
                                                1