[ Home > 電気製品の EMC/安全適合性 > 用語 ] 電圧定在波比 (VSWR) 伝送線路に インピーダンスの不整合があると、 進行波の一部がその点で反射され、逆方向に伝搬する波 (反射波) を生じる。 進行波と反射波は、互いに逆方向に伝搬しながら足し合わされたり打ち消しあったりし、 その振幅に波を生じる。 この波 (定在波) の最大の振幅と最小の振幅の比率を定在波比 (standing wave ratio; SWR) と言い、 特に電圧については電圧定在波比 (voltage standing wave ratio; VSWR) と言う。 例えば、進行波の電圧の 20% が反射された (すなわち、反射波の電圧の振幅が進行波の振幅の 0.2倍の) 場合、 進行波と反射波が足し合わされる時の振幅は元の進行波の電圧の振幅の 1.2倍、 進行波と反射波が打ち消し合う時の振幅は元の進行
文字列 => 16進文字列 binasciiモジュールでバイト列を16進文字列に変換することができる。 ユニコード文字列の場合はエンコードしてから変換する。 import binascii binascii.hexlify(b'Hello') # => b'48656c6c6f' binascii.b2a_hex(b'Hello') # => b'48656c6c6f' binascii.hexlify(u'こんにちは'.encode('utf-8')) # => b'e38193e38293e381abe381a1e381af' binascii.b2a_hex(u'こんにちは'.encode('utf-8')) # => b'e38193e38293e381abe381a1e381af'
ゾンビプロセスの確認方法 $ ps -ef | grep defunct 殺し方(対処方法) $ kill -KILL PID 一定時間経過することで、ゾンビプロセスが消えることがある。 解消しない場合は、最悪、システムの再起動が必要になる。 ゾンビプロセスとは ・プロセスの実態は存在しないが、プロセステーブルにエントリが 存在する状態を指す。 ・全てのプロセスは、終了した瞬間は、上記の状態になる。 ・親プロセスがwaitで子プロセスの終了ステータスを取得するまでの間、 子プロセスはゾンビプロセスになる。 ・通常は、子プロセスの終了のシグナルを親プロセスに通知され、 親プロセスが子プロセスの後始末をして、ゾンビ状態にならない。 ・子プロセスからのシグナルを親プロセスが正常に受け取れない場合に、 ゾンビプロセスとなる。
はじめに 前回の続きです。 マルチスレッドとパフォーマンス 前回は一つのプログラムで色々なことをするためにマルチスレッドを使うと記載しましたが、 それ以外にもマルチスレッドにすることでパフォーマンスの向上も期待できます。 UINT_MAX回のループを複数個のスレッドに分散させる以下のコードで計測してみましょう。 (2018/8/21 ご指摘をいただいたので修正して再計測) #include <assert.h> #include <chrono> #include <cstdio> #include <iostream> #include <limits.h> #include <mutex> #include <thread> #include <vector> std::mutex mtx_; size_t count_ = 0; void add_count(size_t num)
pthreadで複数のスレッドを作成することは、1つのスレッドを作成する方法と何も変わりません。1つのスレッドを作成したい場合には、pthread 1つのスレッドを動かすをご参照ください。C言語でpthreadを用いて、複数(2つ)のスレッドを実行します。 概要 2つのスレッドを作成するには、pthread_createを2回呼び出すだけ、です。 2つのスレッドを作成したら、2回join(pthread_join)でスレッドを回収しなければなりません。 スレッドが同時に動いていることをわかりやすくするために、スレッドの中で、sleep(usleep)させています。 実行結果から2つめのスレッドの関数が先に終わっていることがわかります。 pthread2.c の例 ソースコード pthread2.c #include <stdio.h> #include <stdlib.h> #includ
[switch - case 文による分岐]←このソース→[三項演算子(2)] /* 三項演算子 */ /* 今日は、三項演算子(?:演算子)について学びます。条件が真なら処理1を、偽なら処理2を行います。 条件? 処理1:処理2; これは、 if ( 条件 ) 処理1; else 処理2; と同じです。 しかし、三項演算子を使えばコンパクトなコードを書くことができます。 例えば、 int IAbs(int x) { return ((x >= 0)? x : -x) } この関数は x の絶対値を返します。次の例は大きい方の値を返します。 int Max(int x, int y) { return ((x >= y)? x : y) } 次の例は、x が偶数(even)か奇数(odd)か表示します。 void Parity(int x) { printf("%s", (x % 2)?
RaspberryPiでWifiのUSBドングルと、RTLデバイスを同居させたときに、rtl_testでエラーになってしまう。 $ sudo rtl_test Found 1 device(s): 0: Generic, RTL2832U, SN: XXXXXXXXXXXX Using device 0: Generic RTL2832U Kernel driver is active, or device is claimed by second instance of librtlsdr. In the first case, please either detach or blacklist the kernel module (dvb_usb_rtl28xxu), or enable automatic detaching at compile time. usb_claim_in
Raspberry PiとRTL2832Uドングルを受信サーバとして使ってみるを参考にしたが、できるだけ楽をしたい。 まず、ライブラリ等のインストール (libusb、libtool、autoconf) apt-get を使おう。まずインストールできるパッケージがあるかを $ apt-cache search libusb で調べる。libusb-1.0-0-dev が良さそう? ということで、 $ sudo apt-get install libusb-1.0-0-dev autoconf と libtool も同様に、 $ sudo apt-get install autoconf $ sudo apt-get install libtool git は、新しい Raspbian なら既に入っている。無ければ同様にインストールするか、OS を更新。 rtl-sdr のインストール これ
最近では SDR の入手も簡単になりウェブで公開しているハムが増えましたね。 お陰で、自宅の無線機の電源を入れる頻度が低下してしまいました。 で、今日は2つの「まとめサイト」をご紹介します。 WebSDR http://www.websdr.org/ 現時点、これだけの SDR 受信機が公開されてますが、この WebSDR に公開している日本のハムは残念ながらいないようです。 今回は、ロシアの MO04SW さんが公開している SDR にアクセスしてみました。 せっかくなので通常の環境ならあり得ない、ロシアの 2m FM、145.50 MHz を聞いてみました。 ロシア語のラグチューがメリット5で流れてくるのでビックリします。 (短波だけじゃなく、現地の V/UHF をリアルで聞くことができるのも、この Web SDR のイイところ!) これってロシアの MO04SW さんのお宅にお邪魔し
技術書典。 もう6回目の開催なんですね。 techbookfest.org わたしは2回目から行ってますが、回を重ねるごとに人足も多くなって、その人気と各出展者様の繁盛ぶりには、ホント驚きます。 Twitter では、参加者が1万人を超えたと流れてました。スゴイ! 私が行ったのは無料入場になってからの午後2時近く・・・入場待機者はビルの外まで並んでるし・・・それでも30分しないで入場できたのはラッキーでした。 で、入場したら、この混雑。 人をかき分けながら見本誌を手に取り、1冊見るのも、まぁ大変でした。 (混雑と、時間制限と、売り切れるかも・・・の3拍子がそろってるので、心理的にはよく見ないで買っちゃう人が多そう。) 今回買ったのは、これだけです。 タダで配ってたものも入ってますが、まぁそれでも5千円くらいは使ったでしょうか。 (みんな1万円以上は買ってるんじゃないかな。) 入場した時間が
新着情報 2012/02/07 GSNアウトリーチ,訪問授業のページを作成しました. 2014/02/13 セキュリティポリシー変更 by WEB管理者 GSN-WGメンバは本ホームページの編集が可能です。すべての編集は、ユーザ名とパスワードが必要です。(これにより、従来の凍結処理は不要です) ↑ 組織 GSNはNPO法人大学宇宙工学コンソーシアム"UNISEC"に設置されたワーキンググループです。衛星通信地上局のネットワーク運用システムを構築することをめざし活動しています。 参加局 (14年11月1日現在) 国内合計17機関 北海道科学大学(旧名:北海道工業大学) 東北大学 首都大学東京, 創価大学, 筑波大学, 東海大学, 東京工業大学, 東京大学, 東京電機大学, 都立産業技術高専, 日本大学, 山梨大学 福井工業大学 大阪工業大学, 大阪府立大学, 和歌山大学 香川大学 九州大学,
Amazon Web Services ブログ AWS Ground Station – 衛星データの取り込み処理の準備完了 去年の秋、AWS Ground Station について話をし、衛星からのデータをダウンリンクするために取るべきステップのプレビューにこっそり触れました。最初の 2 つの地上ステーションが現在稼働中で、 AWS Ground Station を今すぐ利用できます。 AWS Ground Station の利用 当時述べたように、最初のステップは、衛星の NORAD ID やその他の情報を当社と共有することで、お客様の AWS アカウン衛星を追加することです。 オンボーディングプロセスには通常数日かかります。テストのため、Ground Station チームは私のアカウントに次の 3 つの衛星を追加しました。 Terra (NORAD ID 25994) – この衛星
今回のプロジェクトでは(机の引き出しで眠っていた)Beagle Bone Black(以下BBB)とUSBカメラLogitec C310を使ってOpenCVでフェイストラッキングをやってみることにします。このプロジェクトのできしだいでは、今後のロボットプロジェクトなどで活用したいと考えています。 レシピ Beagle Bone Black(以下BBB) Rev. ? ウェブカメラ Logitech(Logicool) C310 OpenCV 2.4.8 環境を構築する 今回のプロジェクトでは、OSにはUbuntu(14.04.2 LTS)を使用、外部電源とUSBカメラ(Logitech C310)、ネットワークケーブルをBBBに指しています。ちなみにこの写真のケースは3Dプリンタで作成したものです。 BBBには、オープンソースのコンピュータビジョンライブラリ「OpenCV」をインストールし
はじめに 管理者権限が必要なコマンドや領域をbatで弄りたいけど困った時に ユーザーがマニュアルを読まず、右クリックしてくれない現場の時に なんかいろいろ面倒になった時に そんな時に使える管理者権限でのbat実行 ただし、powershellとユーザーへの管理者権限付与が必要です。 管理者権限への昇格方法 batの中でpowershellと最初に入れるとpowershellのコマンドが使えます。 それを使って、新しいプロセスを管理者権限で実行しようというわけです。 簡単な解説 powershell ぱわーしぇる start-process 新しいプロセス立ち上げよう 実行対象 立ち上げたい対象 -verb runas 管理者で実行する 想定の構成 Cドラの直下にシステム用のディレクトリを作成してもらう必要が出てしまいました。 ダウンロードしたbatを実行してもらい、作成して貰いましょう K
環境 Ubuntu 15.04 sudo 1.8.9p5 /etc/sudoers に env_reset を設定。 調査 コマンドは info の User information の項目 (info id の 1 ページ前) と、ユーザーを表す環境変数から選んだ。 手動 $ sudo echo $USER user1 $ sudo echo $UID 1000 $ sudo id uid=0(root) gid=0(root) groups=0(root) $ sudo logname user1 $ sudo whoami root $ sudo users user1 $ sudo groups user1 adm cdrom sudo dip plugdev lpadmin
追記 2019年1月現在でも問題なく適用できることを確認しています。 はじめに Slackのデフォルトのテーマ設定で嬉々としてDarkに変えてもバックグラウンドは真っ白・・・ DarkTheme好きにとってはさぞがっかりでした。 そこで手荒くDarkThemeを適用するためのハックです。自己責任で楽しんでください。 動作環境 MacOS 10.12.4 MacBook Pro 13-inch, 2016 Slack App 2.6.0 適用手順 まずはFinderから右クリックでSlackのパッケージの内容を表示させます。 あとはこの下記のパスにあるssb-interop.jsを適当なエディタでひらき Contents/Resources/app.asar.unpacked/src/static/ssb-interop.js 下記のコードを貼り付ける document.addEventLi
Pythonには便利なライブラリがたくさんあり、自由に組み込んで使用することができます。また、自分で作成したモジュールを組み込んで使うことができます。Pythonでライブラリやモジュールを読み込む際には「import」および「from」を使いますが、この2つは使い方がややこしく、違いをあまり分からずに使っている方もいると思います。 そこで今回はimportとfromの使い方について説明します。 importでモジュールをインポート Pythonでライブラリやモジュールを使用するにはimportを使います。importの使い方は以下の通りです。 import モジュール名 importのあとに半角開けてモジュール名をつけることで、そのモジュールを読み込むことができます。importはプログラムのどこに記載しても構いませんが、一般的にはプログラムの一番初めに記述します。そうすることで「このソー
初めに windowsPCでこの作業は行っています。visual studio code自体はmacやLinuxでも動作するようなので、使えるかもしれませんが試していません。 arduino-IDEはコンパイラ・ライター・シリアルモニタなどがセットになっており、簡単に確実に使える便利なIDEであることは間違いない。しかし、arduino-IDEのコーディング作業に、自動コード補完(オートコンプリート)やIntelliSense(メソッドやメンバの表示機能)が使えないという不満があった。そう思っている人も多いのではないか?そういうわけで、arduino-IDEはもっぱら書き込み専用ソフトと化し、コーディング自体は外部エディターで書いていた。 そんなところに以下のような記事を見かけた。 Microsoft、“Arduino”向けの「Visual Studio Code」拡張機能をオープンソース
現在、Red Hat Linux 9を利用しています。ホームディレクトリに「.bashrc」や「.bash_profile」というファイルがあるのですが、これは何でしょうか? ご質問にあるファイルは、どちらもユーザーのホームディレクトリに置かれ、シェルが起動するときに実行される初期化ファイルです。 シェルには、大きく分けて2つの役割があります。まず1つ目は、ユーザーがコマンドを実行するためのコマンドライン環境を提供し、ユーザーとOSの中枢であるカーネルとのインタフェースの役割を果たすことです。 もう1つは、ユーザーがログインを行った際に、環境を整えるためにさまざまなファイルを実行し、初期化を行うことです。初期化のために実行されるファイルはシェルの種類によっても異なり、今回ご質問にあるファイルはbash(Bourne Again SHell)が起動されるときに実行されます。 以下では、bas
抵抗器にはその抵抗値や許容差などを表すマーキングが印刷されており、 その表示方法、内容、読み方はメーカー、製品、サイズなどにより個別のルールがあります。 ここではリード線形抵抗器とチップ抵抗器の一般的な表示方法と読み方などを解説します。 ■リード線形抵抗器 (→ 製品一覧) 部品本体のカラーコード/カラーバンドにより「抵抗値」と「許容差」を表し、4線又は5線 での表示が基本です。 カラーコードの位置と色で表す数字はJIS C 5062で下記のように定められています。 (一部当社独自ルール含みます。) 色と数字の覚え方はいろいろありますが一番シンプルで覚えやすいものを掲載しました ので参考にしてください。 【カラーコードの割り付け】 →リード線形抵抗器一覧 【読み方の例】 【そうなんだ!!カラーコード塗装工程公開】 厚さ0.3mm程度の円板が各色の容器からインクを持ち上げ製品に塗布してい
C言語では言語仕様上、グローバル変数は良く使うと思います。 できるだけ避けるのは言うまでもありませんが。 そこでよく混乱するのがexternではないでしょうか? ヘッダなんかをインクルードすると あれ?そういえばexternって……どうなんだっけ…ってことになります。 私なんかはなんかの参考書でプログラミングを学び始めたときに、 externつけてもつけなくても一緒というような怪しげな解説を見た記憶があり、 それによって、余計に混乱してしまいました。 ただし、関数に関しては一緒です。 ここより正確な記載のあるサイトを見つけましたのでURLを記載します。 C言語のexternキーワードについて(関数編) – cloudtofu いまだに検索流入が多い(2019年8月時点)のでちょっとびっくりします。それだけC言語が息の長い言語であり、 年々使用者が減少しているのでしょうね。私自身もCはもう5
~閑話休題 割り算は遅いか Arduino センサを利用したプログラムでは、データシートに書かれた導出式にしたがって計算式を書いていますが、Arduino UNOは8ビット・マイコンです。Windows 10などでは当たり前にハードの支援が期待できる浮動小数点の演算は、8ビット・マイコンではとても複雑な処理が内部で行われます。処理時間もかかります。 Arduino IDE 1.8.8で実験しています。 ●2^16の計算 16ビットの温度などのデータを読み出した後、そのデータに対して2^16で除算するというケースがあります。Arduinoでは2^16はpow(2,16)です。 void setup() { Serial.begin(9600); float n = pow(2,16); float m = 1/n; Serial.println(n); Serial.println(m,18
Arduino Unoは遅い? Arduinoはマイコンプログラミングの取っつきにくい所を上手く隠し、手軽にガジェット等を作成出来る優れものですが、見えない所で色々と初期設定されて思った様な速度で動いてくれない事があります(特にシリアル受信とか使った時) Arduino UNOでYMF825FM音源ボードをMIDI音源化した時に使った、ヒントになりそうな事をまとめてみました。 ditigalWrite()は使わない これは有名、設定エラーの処理等余分なコードが一杯 digitalWrite(10,LOW); over 40 clock PORTB &= ~(0x04); over 3 clock asm("cbi 5,2"); 2clock 下の方が高速です。 Timer0の停止 Timer0 Overflowの割り込みがデフォルトで設定されているので時間管理が不要なら停止させます、多
/* equinox.c 春分日,秋分日を表示するプログラム */ /* インクルードヘッダ */ #include <stdio.h> /* プロトタイプ宣言 */ int vernalEquinox(int y); int autumnalEquinox(int y); void setVernalEquinoxTable(char table[2][25]); void setAutumnalEquinoxTable(char table[][25]); void printEquinoxTable(char (*table)[25]); /* メイン */ int main(int argc, char *argv[]) { char equinox[2][25]; /* 春分日をテーブルにセット */ /* この場合配列名equinoxは配列の先頭アドレスを意味する */ /*
配列の基本[編集] 配列型(はいれつがた)は、特定の型のオブジェクトの集合を連続して割り付けたものです[1][2]。 配列型を使うことで、同じ型の複数のデータを、共通の名前で、添字(そえじ)と呼ばれる番号を用いて、アクセスすることができます[3][4]。 例えば、10個の変数の合計を求めるプログラムは、配列を用いて次のように書き換えることができます。 スカラー変数を使ったコード #include <stdio.h> int main(void) { const int i0 = 2, i1 = 3, i2 = 5, i3 = 7, i4 = 11, i5 = 13, i6 = 17, i7 = 19, i8 = 23, i9 = 29; int sum = i0 + i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9; printf("%d\n", sum
SmartRF™ Studio は、RF システムの設計者が TI の CC1xxx と CC2xxx の各低消費電力 RF デバイス全般を設計するプロセスの初期段階で無線を簡単に評価するのに役立つ Windows アプリケーションです。構成レジスタの値とコマンドの生成、さらに RF システムの実用的なテストとデバッグを簡素化できます。 SmartRF Studio は、以下の TI デバイスをサポートしています。 SmartRF Studio 8 CC2340R5SmartRF Studio 7 CC2674P10、CC2674R10、CC1354P10、CC1354R10、CC1314R10CC2652R7、CC2652P7、CC1312R7、CC1352P7、CC2642R、CC2652R、CC2652RB、CC2652P、CC1312R、CC1352R、CC1352P、CC2642
SmartRF Transceiver 評価ボード(TrxEB)は、評価、性能テスト、ソフトウェア開発のため、TI のローパワー RF トランシーバと組み合わせて使用します。 以下のトランシーバ評価モジュールがサポートされています。 CC1101EM*CC11xLEM*CC112xEM*CC1175EM*CC1200EM*CC2500EMCC2520EM(*) すべての周波数派生版、および CC1190 との組み合わせもサポートされています 評価モジュールは、TI ストアで別売りの EMK(評価モジュール・キット)の形で入手できます SmartRF TrxEB を使用して実行できる作業 MSP430F5438A マイコンでの無線プロトコルの開発。関連するトランシーバの Web ページに掲載されているコード・サンプルの参照。SmartRF Studio を使用したトランシーバの性能評価。Tr
Protocols Proprietary, Wireless M-Bus Modulation scheme (G)MSK, 2(G)FSK, 4(G)FSK, ASK, OOK Frequency bands 136.7-160, 164-192, 205-240, 273.3-320, 410-480, 820-960 Type Transceiver TX power (max) (dBm) 16 Sensitivity (best) (dBm) -127 RX current (lowest) (mA) 17 Data rate (max) (Mbps) 0.2 Rating Catalog Operating temperature range (°C) -40 to 85 Protocols Proprietary, Wireless M-Bus Modulation sch
© 2012 Broadcom Corporation. All rights reserved Broadcom Europe Ltd. 406 Science Park Milton Road Cambridge CB4 0WW BCM2835 ARM Peripherals 06 February 2012 Broadcom Europe Ltd. 406 Science Park Milton Road Cambridge CB4 0WW Page ii © 2012 Broadcom Corporation. All rights reserved Table of Contents 1 Introduction 4 1.1 Overview 4 1.2 Address map 4 1.2.1 Diagrammatic overview 4 1.2.2 ARM virtual a
(For BeagleBoardAngstrom, click here.) (Should Beagleboard:Ubuntu On BeagleBone Black be merged into this page?) This page is about running a Linux distribution (ARM EABI) Ubuntu on the BeagleBoard. BeagleBoard will boot the (ARM EABI) Ubuntu distribution from the SD card. Since much of this page is generic, it has also been extended to help support devices such as the PandaBoard and BeagleBone. F
はじめに tar.xzというアーカイブファイルをWindows環境で展開するには、7-Zipを使います。 7-Zipの入手 圧縮・解凍ソフト 7-Zip 2段階で展開する 7-Zipをインストールすると右クリックから7-Zipで展開することができます。 .xzファイルを展開すると、tarファイルができあがるので、もう一度展開すると目的のフォルダが出来上がります。 関連記事 【PowerShell】スクリプトの実行がシステムで無効になっているため、ファイル xxx.ps1 を読み込めません。 Windows7のファイル検索でAND検索を行う Lhaplus1.72で解凍先の指定が保存されない。 Dependency Walkerを日本語化する方法 WinMergeで2つの画像の差異を比較する方法
Linux基本コマンドTips一覧 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、カーネルが出力したメッセージを表示する「dmesg」コマンドです。 dmesgコマンドとは? 「dmesg」は、Linuxカーネルが起動時に出力したメッセージを表示するコマンドです。 カーネルがメッセージを保存する場所である「メッセージバッファー」はサイズが決まっており、バッファーサイズを超えたら先頭から上書きされる、という“リング構造”になっています。dmesgコマンドはこのメッセージバッファーを表示するため、全てのメッセージ内容を表示できるわけではありません。
Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。 2013/2/4 デジタル入出力として使えるピンについて追記しました。またソフトウェアシリアルの制限についても追記しました。 2013/2/10 Arduinoボードのピン配列図を見ながら確認すると分かりやすいよ。 Arduino公式ページによると、現在Arduinoボードは15種類ほど存在します。搭載されているマイコンや動作電圧、動作クロック、形状の違いはあるものの、マイコン別にみると次の4つに分類できます。 ATmega328系 Arduino Uno, Duemilanove, Mini, LilyPad, Nano, Pro, Pro Mini, FioATmega2560
Arduino IDE 1.6.1で「Uncertifed board」ダイアログが出る問題について Arduino Mega 2560はArduino UnoのメモリやI/Oを増量したものです。 このUSBシリアル変換機能は通常のCDCクラスとして動作するので、MacおよびLinuxではドライバーは必要ありません。Windowsでは、以前のArduino Megaの時と同じようにハードウェア接続時のウィザートで.infファイルの含まれている「drivers」のフォルダを指定すればOKです。 フラッシュメモリ:256 KB (内8 KBをブートローダーで使用) SRAM:8 KB デジタルI/Oピン:54本 (内15ピンはPWM出力可) アナログ入力ピン:16本 クロック速度: 16 MHz Arduino IDE プロダクトサイト 2020年10月時点のバージョン ピンソケットが繋がり、
κeenです。 今回の話は別にRustに限ったものではないのですが、よくRustを始めたばかりの人がスタックとヒープが分からないと言っているのをみかけるので少しメモリの話をしますね。 厳密な話というよりは雰囲気を掴んで欲しいという感じです。 メモリは配列 プログラム(プロセス)のメモリには実行するプログラム(機械語)やグローバル変数/定数、関数の引数やローカル変数、その他プログラムで使うデータ領域などを置きます。 プロセスに割り当てられるメモリというのは、1つの巨大なのっぺらな配列みたいなものです。サイズも決まってます。64bit OSなら2^64 byteです。 0 2^64 +--------------- ----+ | | | | | ~~ | | +--------------- ----+ これは仮想的なメモリなので実際の物理メモリに2^64 byteの配列がドンと確保される訳
キーワード セクション, オブジェクトファイルフォーマット, .text, プログラムローダ, ELF(Executable and Linkable Format) これだけは覚えよう プログラムは複数のセクションという単位に分割されている 原因と原理 私たちが日ごろ作っているプログラムは、ノイマン型コンピュータ上で動きます。ノイマン型コンピュータというのは、プログラムをメモリに蓄えているタイプのコンピュータ(Program stored computer)を指し、プロセッサとメモリを持ったものは大体ノイマン型です。当然私たちのプログラムもメモリにロードされて動いています。 プログラムが動くとき、さまざまな用途でメモリが使用されます。その用途は、機械語をおくためや、変数として値を格納しておくため、またC言語などでは関数呼び出しを行うためのスタックとして使用するため、mallocなどで動的
In computing, a data segment (often denoted .data) is a portion of an object file or the corresponding address space of a program that contains initialized static variables, that is, global variables and static local variables. The size of this segment is determined by the size of the values in the program's source code, and does not change at run time. The data segment is read/write, since the va
あー、明日は学校でセンター試験とかなきゃいけないらしいです。特に国語は不可だと思います。 初めに記しますがこの章結構長くなりそう 改めて本題に入ると、 セグメントとは領域という意味らしい コンパイルされたプログラムを実行するとき、 メモリ空間がテキスト、データ、ヒープ、スタック、bssという5つのセグメントに分割されるとのこと。(bssってなんや それぞれのセグメントには目的があるらしい 1.テキストセグメント 別名コードセグメント。 機械語が格納される。高水準言語の制御構造とか関数はアセンブリのbranch,jump,call命令にコンパイルされるから、命令処理の実行は非線形になる(日本語でおk。 非線形って直接的な意味は分からんけど、最初から全て決まった順で処理をしないということかな?わかんない 実行時にテキストセグメントの先頭の命令を指すようにeipが設定される そのあとeipが指す
最近、ArdionoのWifiシールドを買ったのですが、 そのWifiシールドのサンプルコードを動かしてみると動かない・・・ どこが悪いんだろうと思っても、サンプル自体結構ソースコードが長い(追うヤル気が無い) デバッグ出力があったので、有効にしてみても 結局メッセージの出力だけなので、ソースの何行目のメッセージなのかわからなかったり・・・ 今、ソースコードの、どのファイルの何行目を処理してるって知りたいので Arduinoを使っている皆さんどうしていらっしゃるでしょ?って思って調べてみても、 それらしいイイ感じの記事が見つからない なので、C/C++でよく使うようなデバッグ用のマクロを作成しました。 #ifndef __DEBUG_H__ #define __DEBUG_H__ #define DEBUG #ifdef DEBUG #define BeginDebugPrint() Se
ArduinoのTimerに関する情報がまとまっていなかったのと、自分には複雑だったためかいつまんで重要そうなところだけまとめてみます。今後も加筆・修正していく予定です。後学のためにも間違いがありましたらご指摘いただけると幸いです。またこの記事において"arduino"は全てArduino Unoを指します。 なぜTimerが必要か 個人的にはATtiny85(Arduinoの超小型化版のようなもの。詳しくは->ArduinoユーザーのためのATTiny入門)で(擬似的な)サイン波を出すために必要でした。Arduinoではtone()やfor文を使って矩形波で音を出すことは可能ですが、サイン波など矩形波以外の信号を手軽に出すにはMozziなど外部のライブラリが必要でした。 Timerは基本的には正確なタイミングでなんらかのシグナルを送りたい時に必要になるものです。arduinoではdela
Arduino は「Arduino」という名前は商標で守られていますが、回路図、基板図、ブートローダ、ファームウェア等々はオープンソースハードウェア、ライセンス的には CC-BY SA で公開されているため、商用として同等製品を作って売ることや、好きに変更して売ることが可能です。 そのため、オフィシャル設計に代替チップを載せた安価なハードウェアや、同等のチップやブートローダで構成されているけど、オフィシャルラインナップには無いハードウェア等々、様々な Arduino 互換機が売られています。 本エントリーでは、私が購入してた安価な Arduino 互換機を ebay.com の購入リンクと一緒に紹介します。なお価格は特に記載が無い限り、2015年12月時点(1USD = 121.1円)の価格で、日本への送料無料です。 SainSmart Uno SainSmart は日本の Amazon
この Pro Micro は小さくていいのですが、足が二本しか出ていない表面実装用の Micro USB コネクタなので抜き差しに弱いです...もげます。何かに組み込んで使い、かつ頻繁にケーブルを抜き差しする可能性があるのでしたらエポキシ接着剤等で固めておいたほうがいいでしょう。 3.3V 製品が 8MHz なのは ATmega32U4 の仕様によるものなので、3.3V 製品で 16MHz のものを探しても見つからないと思います。以下データシートの記述を転載します。 29.6. Maximum speed vs. VCC Maximum frequency is depending on VCC. As shown in Figure 29-2 on page 386, the Maximum Frequency vs. VCC curve is linear between 2.7V <
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く