async/awaitって簡単な記述に見えて意外と難しい。。
ということでブログにてメモをまとめておく。
まず、async/awaitの挙動について。
関数の頭にasyncを付けて、Task処理をawaitつけると
コンパイルする段階でステートマシン生成して非同期処理を構築してくれる仕組みである。
1つ工夫があって、awaitしたTask処理を別スレッドで動かせて、戻ってくるときはスレッドを戻せるように作られている。
ここがすごく重要ポイントで、
①awaitしたTask処理を別スレッドで動かせる
②戻ってくるときはスレッドを戻せる
ここをしっかり理解しておかないと意図しない動きになってしまいます。
一体どういうことなのかというと、
Task.Runしていないタスク関数は別スレッドで実行するようになっていない
→ハマりポイント①
async/await使ってるのになぜか同じスレッドを継続してしまう場合は大体これ。
例えばGUIのイベント関数をasyncした場合、最初はUIスレッドで動いている。
awaitポイントに到着した時にタスク処理を実行するんだけど、
なぜかUIスレッドのままの場合があって、それが原因でデッドロックに陥る事がある。
その時は大体Task.Runを使って明示的に別スレッドで実行します宣言すれば良い。
タスク処理が終わったあとの挙動だけど、
awaitするタスク関数の後ろにConfigureAwait(false)を付けると、
呼び出し元のスレッドには戻らずにタスク処理したスレッドを継続する。
→ハマりポイント②
コンテキストスイッチを行うかどうかの設定。
主に処理速度を優先したい場合は使っておくと早く動作してくれる。
上記内容で、async/await,Task.Runの仕組みが分かったと思う。
次にWinRT系、Win10とかUWP、.Net core界隈の技術を使うと新しく出てくるインターフェイス
IAsyncOperationWithProgress
IAsyncOperation
IAcynsActionWithProgress
IAsyncAction
これらは非同期ステートマシンで実装されているけど、Task.Runをしていないのでイベント関数をasyncしてawaitしちゃったりするとデッドロックする。なんでデッドロックするのは最初の説明で分かると思うけど、
イベント関数はUIスレッドで処理され
IAsyncOperation/IAsyncAction系のタスクをawaitで実行した先もUIスレッドだから。
つまり自分自身はawaitでWait状態になっているところにUIスレッドで実行したい処理をPostしたりするからデッドロックなんだろうって事ですね。。
この辺の実装でうまく回避するならば、TaskAwaiterを自作してWait処理の所を定期的にawait Task.Run()とかで処理を逃がしてあげるか、UIスレッドに触れる部分は1つのAwaitだけにしておいて、UIスレッドと実行するタスク処理を明確に切り分けておく必要がありそう。
WinFormのような方式ならApplication.DoEvents()関数をコールすれば済むんだけどね!
追記:
上記の事を守っているのに、await厨なところがすり抜けてしまう現象がある。
これはawaitってセマフォでWaitしているんだって思えば理屈は分かるだろうか。
Async/Awaitの視点がプログラムフロー視点ではなくスレッド視点だから起こりうる現象で、1スレッドあたり1セマフォ。つまり1回に限りコンテキストスイッチ切替が許されているわけ。
現象のメカニズムは大体こんな感じで
1.UIスレッドがawait中に別スレッド内でUIスレッドを呼び出す。
2.その別スレッド内で動かしたUIスレッド内でawaitするとすり抜け現象が起きる。
3.UIスレッド内で2重awaitが発生する。
2重awaitが発生すると最初のawaitした部分が解除されてしまい、処理が動き出してしまうのである。
インターネット上にある断片化された情報を切り取って、リブログする。 主にソフトウェア、Ubuntu関連、CPUなど気になったニュース、また、日々の面白い出来事やニュースもリブログします。
2019年9月12日木曜日
2019年9月10日火曜日
【Winform】別スレッドからGUIを操作する
意味が分かっていても上手く動いてくれずにデッドロックするケースが多い問題である
「別スレッドからGUIの操作」のお話ですが、ようやく腑に落ちる対処方法が分かったのでメモ。
【問題の背景】
基本ですが、アプリは必ずメインスレッドが存在していてWinformだとスレッドID=1になる。
これがProgram.csの先頭から実行してGUIを表示したりする。
んで、画面上のボタンを押したら別スレッドが起動して重い処理を実行する。
その別スレッド内部でエラーが発生した場合、
例外を投げてtry~catch先でエラーハンドリングするなら特に問題なし。
別スレッド内部でエラーハンドリングを行ってしまおうってするとデッドロックしてしまうケースがある。
【ピンポイントな原因】
なぜデッドロックしてしまうかというと、メインスレッドが別スレッドの完了待ち状態でロックしているから。
これに尽きる。
言い換えれば、
メインスレッドは別スレッドの完了待ち状態で、
別スレッドはメインスレッドにGUI操作を要求したからデッドロックに陥っている。。
ここまで分かればひとまずOK。
~~余談~~
非同期に処理して、別スレッドから完了通知を受け取る方式なら回避できる。
この実装はいわゆるasync/awaitになるのだけど、理解するのに結構手間取るんだけどね。。
【デッドロック確認方法】
デッドロックした場合、デバッガ上で確認する事が出来る方法があって、
デバッガ上のスレッド一覧にあるメインスレッドがソース上のどの位置にいるかで判断が付く。
現在のスレッドが1以外の別スレッドで
メインスレッドの現在位置が
Application.Run(new Form());
ならば問題なし!
もし、Wait(); とかそういう場所で止まっているなら必ずデッドロックが発生します。
【対処法】
そのデッドロックポイントを見つけたらInvokeRequireとかTaskのasync/awaitを用いて回避するのが一番簡単。
意外とこの仕組みを理解しておかないと色んなプログラムで同じようなハマりポイントでつまずくと思うので、ぜひとも押さえておきたいポイントです。
「別スレッドからGUIの操作」のお話ですが、ようやく腑に落ちる対処方法が分かったのでメモ。
【問題の背景】
基本ですが、アプリは必ずメインスレッドが存在していてWinformだとスレッドID=1になる。
これがProgram.csの先頭から実行してGUIを表示したりする。
んで、画面上のボタンを押したら別スレッドが起動して重い処理を実行する。
その別スレッド内部でエラーが発生した場合、
例外を投げてtry~catch先でエラーハンドリングするなら特に問題なし。
別スレッド内部でエラーハンドリングを行ってしまおうってするとデッドロックしてしまうケースがある。
【ピンポイントな原因】
なぜデッドロックしてしまうかというと、メインスレッドが別スレッドの完了待ち状態でロックしているから。
これに尽きる。
言い換えれば、
メインスレッドは別スレッドの完了待ち状態で、
別スレッドはメインスレッドにGUI操作を要求したからデッドロックに陥っている。。
ここまで分かればひとまずOK。
~~余談~~
非同期に処理して、別スレッドから完了通知を受け取る方式なら回避できる。
この実装はいわゆるasync/awaitになるのだけど、理解するのに結構手間取るんだけどね。。
【デッドロック確認方法】
デッドロックした場合、デバッガ上で確認する事が出来る方法があって、
デバッガ上のスレッド一覧にあるメインスレッドがソース上のどの位置にいるかで判断が付く。
現在のスレッドが1以外の別スレッドで
メインスレッドの現在位置が
Application.Run(new Form());
ならば問題なし!
もし、Wait(); とかそういう場所で止まっているなら必ずデッドロックが発生します。
【対処法】
そのデッドロックポイントを見つけたらInvokeRequireとかTaskのasync/awaitを用いて回避するのが一番簡単。
意外とこの仕組みを理解しておかないと色んなプログラムで同じようなハマりポイントでつまずくと思うので、ぜひとも押さえておきたいポイントです。
2019年7月25日木曜日
【トンデモ通貨戦争】
それは21世紀、各国の中央銀行が金融世界を支配していた頃である。
当時の紙幣は政策によって無尽蔵に発行でき、インフレを調整する事ができたのである。
しかし今現在では禁止されている。
死のユーロリスク、ギリシア問題やブレグジットなどの複数の国で共通通貨を使ったことで起こったことも歴史の1ページとして記憶に新しい出来事。
全世界共通通貨ではGummoビットコインが使い支払いを行うのが当たり前になっている。
現代における金融・インフレリスクの対処法も基本は同じ。
自国の紙幣を増やしたり利回りの調整するのは一緒。
ただ、紙幣の発行ができない部分だけが異なる。
金融政策はどうしているの?というと、
通貨獲得のためにトレーダの税率調整が行われ
外貨獲得、それが経済を支える重要な要素の1つになっているのである。
獲得した資金はベーシックインカム制度に回され日本全国の国民に消費して
新たな価値が生まれれば投資資金も集まる世の中。
何もしなくても良い、ただし生産性のない人は世捨て人と呼ばれ評価格差社会になっているが、
稼ぐ時代はもう終わり。
2019年7月22日月曜日
夢のAPU
AMDの第3世代Zen2になってCPUコアからメモリコントローラを分離した理由が
「コスト」だというなら、表向きの聞こえはいいよね。
でも今回販売されたAPUが第2世代のコア搭載だったというのにがっかり感があるが
もしRyzen初代登場の時に夢見ていたRyzenコアのAPUだとしたらハッピーなニュースになりそうだなと予感がよぎった。
どんなものかというと、HBM+APU構成・・・
今回CPUとメモリーコントローラが分離されたタイミングがナイスすぎる。
HBM版とDDR版でグレード分けできるし、バス型接続でヘテロジニアスも可能。。。(この場合のアービトラージとかは置いといて、)
ゲーミングノート市場も活性化委されてきたし、そろそろ上位APUを出してきてもいいよね。(出たら買うフラグ)
「コスト」だというなら、表向きの聞こえはいいよね。
でも今回販売されたAPUが第2世代のコア搭載だったというのにがっかり感があるが
もしRyzen初代登場の時に夢見ていたRyzenコアのAPUだとしたらハッピーなニュースになりそうだなと予感がよぎった。
どんなものかというと、HBM+APU構成・・・
今回CPUとメモリーコントローラが分離されたタイミングがナイスすぎる。
HBM版とDDR版でグレード分けできるし、バス型接続でヘテロジニアスも可能。。。(この場合のアービトラージとかは置いといて、)
ゲーミングノート市場も活性化委されてきたし、そろそろ上位APUを出してきてもいいよね。(出たら買うフラグ)
2019年7月13日土曜日
シンギュラリティ
ディープラーニングで表舞台に返り咲いたAI分野ですが、
ここ数年AIの活用事例が増えてきて企業ノウハウをAI化する流れに芽が出始めてきていますね。
古文をAIに読ませて解読するとか、数万の論文を読ませて新素材の組み合わせを発見したり
医療関係ならガン診断、熊本城の石垣復刻などなど
専門家がやっているブラックボックスな事象をデータ化してどんどんAI化されていくことでしょう
AIが出した結果を見れば不思議な答えが出てくることもあるでしょうが、それはそれ。
今まで人が着目しなかった強いつながりを見つけ答えを出した結果だから
集めたデータセットの誤りだとか考慮して検証するチームが今後伸びていく職種かもしれない。
1つの事例としてあげるならAIスピーカーが日常会話を録音していて
GAFA関連企業が録音した音声のテープ起こしをしているという情報がリークされたのは
ここ最近でニュースになった事実。
最後にAIの脅威とは何かについて書くと、それは学習速度。
人が1日10冊ペースで読むと1年かけて3650冊読破できるとしたらAIは数時間で終わる。
人は生まれ持って読む・学習する速度に限界が決まっているが、コンピュータなら性能は青天井。
それが脅威の正体だと分かれば、AIとは得体のしれない技術だって思わなくなることでしょうw
2019年7月5日金曜日
映画のコンフィデンスマンJP~ロマンス編~の主題歌「official 髭 pretender」の替え歌
映画のコンフィデンスマンJP~ロマンス編~
個人的にはめちゃくちゃ良かったー
映画「STING」好きならオススメ
Official髭男dism 「pretender」の替え歌まで作りましたw
テーマは仮想通貨ビットコインFXトレード。
曲と合わせて聞いてみてください_(:3 」∠)_
【Pretender】
BTCFXのトレード
それは予想通り
いざエントリーすればひとり芝居だ
長期MAがずっとそばにいたって
結局ただの傍観だ
感情のない損切
それはいつも通り
慣れてしまえば悪くはないけど
BTCのトレンドは人生柄
続きはしないことを知った
もっと違う設定で もっと違う関係で
出会えるゴールドクロス 選べたらよかった
もっと違うオシレータで もっと違う指標で
ダマしを伝えられたらいいな
そう願っても無理だから
グッバイ(損切)
このトレンドでこのポジじゃない
辛いけど否めない でも離れがたいのさ
その髭に触れただけで 痛いや いやでも
甘いな いやいや
グッバイ(損切)
2019年7月3日水曜日
USBポートをリセットする
色んなサイトを見て回ったけど、情報があちこち散らばっていて
探すのが大変だったのでまとめておきます。
【プログラムから行う場合】
パイプエラーから回復する方法
https://docs.microsoft.com/ja-jp/windows-hardware/drivers/usbcon/how-to-recover-from-usb-pipe-errors
【DevCon.exeを使った場合】
コマンド集
https://serverfault.com/questions/117898/is-it-possible-to-reset-ftdi-virtual-com-ports-enumeration-we-easily-get-hundre
devcon findall =usb
devcon findall =ports
【TIPS】
デバイスドライバーをリセットする方法
1.管理者権限でCmd「コマンドプロンプト」を起動する。
2.再起動したいデバイスインスタンスパスに対してrestartコマンドを送信する。
例:devcon restart USB\VID_0403*
これで通信エラーで復旧できないポートを復活させることができるかもしれません。
探すのが大変だったのでまとめておきます。
【プログラムから行う場合】
パイプエラーから回復する方法
https://docs.microsoft.com/ja-jp/windows-hardware/drivers/usbcon/how-to-recover-from-usb-pipe-errors
【DevCon.exeを使った場合】
コマンド集
https://serverfault.com/questions/117898/is-it-possible-to-reset-ftdi-virtual-com-ports-enumeration-we-easily-get-hundre
devcon findall =usb
devcon findall =ports
【TIPS】
デバイスドライバーをリセットする方法
1.管理者権限でCmd「コマンドプロンプト」を起動する。
2.再起動したいデバイスインスタンスパスに対してrestartコマンドを送信する。
例:devcon restart USB\VID_0403*
これで通信エラーで復旧できないポートを復活させることができるかもしれません。
2019年6月28日金曜日
部屋干しの洗濯物の臭いをやっつける!
【プロジェクト:バスター洗濯臭】
洗濯した後に匂う「生乾き臭」、あれほんと2度洗いしても取れないんですよねw
洗剤でAg+配合とか、香料の良いものに代えても効果ありませんでした。
そんな中、、、今年は洗濯の匂いの研究をしました。
解明するためにまず、生乾きの匂いの原因について調べる必要があり・・・
~~~1時間くらい話せる内容なので省略~~~
【結論】
「洗濯まぐちゃん」という商品を買えばOKです。
もしくは、
・浴槽洗剤用の過酸化ナトリウムや
・酸素系洗剤
・ワイドハイターEX(漂白剤)
アルカリ系の洗剤でもOK
【効果について】
中にはマグネシウムのBB弾サイズのボールが100g弱入っているだけですが効果があります。
それはなぜでしょうw
【原理】
マグネシウムは水と接触すると水酸化マグネシウムになり、
水素イオンを放出してPhが+1~2程度上昇、つまり弱アルカリ性の洗濯水になります。
それが「洗濯まぐちゃん」の効果です。
いってしまえば、
「アルカリ水で洗えば匂わなくなる」
これが基本原理。
もう少し深く話せば、
アルカリ性の性質で油やたんぱく質を溶かす作用があり
衣類に付いた細菌や皮脂汚れを溶かし、匂い物質が少なくなるのがポイントですね。
靴の匂いも同様で、
弱アルカリ性の洗剤で洗うと匂わなくなります。
【応用】
アルカリ水で洗濯しても匂いが残っている場合は、水の温度を上げると効果がアップします。
それと使ったお風呂に漂白剤やまぐちゃんを入れて1時間洗濯物を漬けこんでから洗濯するとか
エコなやり方は色々とありますが、試してガッテンとかネット上にそういった情報は沢山あるので
まぐちゃん、漂白剤、洗濯、匂いなどをキーワードに検索してみてください。
【おすすめ使用方法】
・自作まぐちゃん(約100g)
・ナノックスをいつもの半分以下の量
・過炭酸ナトリウム少量
浴槽もキレイになるし、完全に生渇きの臭いも消えて快適ライフです!
おすすめ
・マグネシウム1000g
・過炭酸ナトリウム1000g
自作まぐちゃんの場合は
ダイソーで排水溝用ネットにマグネシウムボールを入れ縛ってから
クッション付きの小さな洗濯ネットに入れればOKです
【経済性】
マグネシウムは全部溶けきるまで使えるのでエコだけど、洗剤のコストは極力減らしたいところw
【注意点】
アルカリ性にすれば効果があると分かって
強アルカリ水にすればパワーアップって思ってやるのはとても危険でして
色のついた洋服は真っ白になるし、手に付着すれば皮が溶けますw
(水酸化ナトリウムもアルカリ性でしたね!)
洗濯した後に匂う「生乾き臭」、あれほんと2度洗いしても取れないんですよねw
洗剤でAg+配合とか、香料の良いものに代えても効果ありませんでした。
そんな中、、、今年は洗濯の匂いの研究をしました。
解明するためにまず、生乾きの匂いの原因について調べる必要があり・・・
~~~1時間くらい話せる内容なので省略~~~
【結論】
「洗濯まぐちゃん」という商品を買えばOKです。
もしくは、
・浴槽洗剤用の過酸化ナトリウムや
・酸素系洗剤
・ワイドハイターEX(漂白剤)
アルカリ系の洗剤でもOK
【効果について】
中にはマグネシウムのBB弾サイズのボールが100g弱入っているだけですが効果があります。
それはなぜでしょうw
【原理】
マグネシウムは水と接触すると水酸化マグネシウムになり、
水素イオンを放出してPhが+1~2程度上昇、つまり弱アルカリ性の洗濯水になります。
それが「洗濯まぐちゃん」の効果です。
いってしまえば、
「アルカリ水で洗えば匂わなくなる」
これが基本原理。
もう少し深く話せば、
アルカリ性の性質で油やたんぱく質を溶かす作用があり
衣類に付いた細菌や皮脂汚れを溶かし、匂い物質が少なくなるのがポイントですね。
靴の匂いも同様で、
弱アルカリ性の洗剤で洗うと匂わなくなります。
【応用】
アルカリ水で洗濯しても匂いが残っている場合は、水の温度を上げると効果がアップします。
それと使ったお風呂に漂白剤やまぐちゃんを入れて1時間洗濯物を漬けこんでから洗濯するとか
エコなやり方は色々とありますが、試してガッテンとかネット上にそういった情報は沢山あるので
まぐちゃん、漂白剤、洗濯、匂いなどをキーワードに検索してみてください。
【おすすめ使用方法】
・自作まぐちゃん(約100g)
・ナノックスをいつもの半分以下の量
・過炭酸ナトリウム少量
浴槽もキレイになるし、完全に生渇きの臭いも消えて快適ライフです!
おすすめ
・マグネシウム1000g
・過炭酸ナトリウム1000g
自作まぐちゃんの場合は
ダイソーで排水溝用ネットにマグネシウムボールを入れ縛ってから
クッション付きの小さな洗濯ネットに入れればOKです
【経済性】
マグネシウムは全部溶けきるまで使えるのでエコだけど、洗剤のコストは極力減らしたいところw
【注意点】
アルカリ性にすれば効果があると分かって
強アルカリ水にすればパワーアップって思ってやるのはとても危険でして
色のついた洋服は真っ白になるし、手に付着すれば皮が溶けますw
(水酸化ナトリウムもアルカリ性でしたね!)
2019年5月28日火曜日
自宅でインドカレーを作る。
昨日家でインドカレーを作ってみた。
作り方:
1.熱した油の中にクミンを入れる。
2.時短処理したアメ色玉ねぎとショウガを入れる。(カレーベースの出来上がり)
3.一度弱火にして好みのスパイスを入れ、量を増やす。
簡単、15分くらいでできあがり。
シャバシャバカレーにするなら、やっぱり野菜盛りなゲキアツのスープカレーが良い。
1つ注意点、
クミン炒めると部屋中にカレー?の香りが充満するので換気は強徹底で!
令和時代のモノのありかた
~自分の考える令和時代~
昭和時代は黒電話を代表にどんな事が起きても壊れないものが良い製品で人気商品であった。
平成になるとモノで溢れかえり、昭和でいう良いものが売れにくい時代になったので
リリースサイクルを短くなり新商品というタイトルで目移りさせ
ガラクタやゴミでも物欲を掻き立てさせ容姿や口コミで売るのが平成になる。
令和からはいわゆるシェアエコノミーの時代がくる。
ゴミが増やさずリース販売がメインで進んでいくと思う。
日常生活に必要な家電類から植木鉢に至るまで全てリース化されて不要になれば業者に返却する。
もうゴミ量産時代は終わり。
欲しいと思った人にリースして関連サービスも提供されていき、新たなサービス業も増えいく。
所有する時代も変えていくのではなかろうか。
2019年5月23日木曜日
InkSpaceを使って画像(ラスタ)からSVG(ベクトル)へ変換する方法。
無料のドローツール「Inkspace」を使って、画像からベクトルデータに変換する方法をまとめました。
ダウンロード先
https://inkscape.org/ja/
作業の流れ
Inkspaceで画像を開いて、ベクトルデータに変換を行います。
変換するとベクトルデータは範囲選択された状態になっていますが、
ワーク上は画像データとベクトルデータが2つ重なっています。
まず、切り取りしてクリップボードにベクトルデータを退避してから
元画像データを削除してから
クリップボードにあるベクトルデータを張り付けて終わり。
この話を手順にすると、、、
①InkSpaceを開く
②画像を開く
③CTRL+Aを押してすべて選択状態にしておく
④メニューバー「パス」→「ビットマップをトレース」を選択
⑤プレビューをチェックを入れて画像が出てきたら「OK」ボタンを押す
⑥CTRL+Xで切り取りをする(トレースデータをクリップボードに退避)
⑦CTRL+Aでビットマップを全て選択して「Delete」キーを押す(最初の画像を削除)
⑧CTRL+Vでトレースデータを張り付けて、画像を白紙の上に移動させる
⑨ファイル→保存(EPSとか好きな形式で)
これでファイル作成おk
ラベル:
Inkspace
2019年4月30日火曜日
VSCodeでAnaconda開発環境を整える。
VSCodeでAnaconda開発環境を整える。
Step1.PATH環境変数を設定する必要します。
C:\Users\abc\Anaconda3
C:\Users\abc\Anaconda3\Scripts
C:\Users\abc\Anaconda3\Library\bin
Step2.Settings.jsonのPythonPathを設定する。
"python.pythonPath": "C:\\Users\\abc\\Anaconda3\\envs\\bitmexbot\\python.exe"
以上で設定完了。
デバッグする時に左下のメニューバーにどのバージョンのPython実行環境を選べるので、
そこでActivateしたい環境を選べばOKです。
例:「Python 3.7.1 64bit("hoge": conda)」
Launch.jsonを作る時は、「Python: Current File」でひな型を作り
実行したいソースを開いて実行(F5)するとデバッグ開始します。
ーーーー
実はそのまま動かすと、PSSecuritException例外エラーが発生します。
これを解決するには管理者権限でPowerShellを起動して、
以下のコマンドを入力します。
「Set-ExcutionPolicy RemoteSigned」
実行ポリシーを変更しますか?と出てきたら「Y」を押せば完了。
Step1.PATH環境変数を設定する必要します。
C:\Users\abc\Anaconda3
C:\Users\abc\Anaconda3\Scripts
C:\Users\abc\Anaconda3\Library\bin
Step2.Settings.jsonのPythonPathを設定する。
"python.pythonPath": "C:\\Users\\abc\\Anaconda3\\envs\\bitmexbot\\python.exe"
以上で設定完了。
デバッグする時に左下のメニューバーにどのバージョンのPython実行環境を選べるので、
そこでActivateしたい環境を選べばOKです。
例:「Python 3.7.1 64bit("hoge": conda)」
Launch.jsonを作る時は、「Python: Current File」でひな型を作り
実行したいソースを開いて実行(F5)するとデバッグ開始します。
ーーーー
実はそのまま動かすと、PSSecuritException例外エラーが発生します。
![]() |
| PSSecuritExceptionエラーを出なくする方法 |
これを解決するには管理者権限でPowerShellを起動して、
以下のコマンドを入力します。
「Set-ExcutionPolicy RemoteSigned」
実行ポリシーを変更しますか?と出てきたら「Y」を押せば完了。
2019年3月28日木曜日
[ARM]最新のツールチェーン(gccとかdbg)をダウンロード
Cortex-M0+マイコンなSAMD21を使っているんだけど、
AtmelStudio開発環境で最初に同梱されているツールチェーンのバージョンが6.3.1だったりする。
古い(枯れた)環境で問題ないけども、最新のバージョンって気になるじゃん?ってことで入れてみた。
https://developer.arm.com/tools-and-software/open-source-software/gnu-toolchain/gnu-rm
上のURLから最新版をダウンロードしてきて、
「C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain」
この辺りのフォルダを差し替えるだけ!
まぁ、簡単で良かったけど、
gcc-arm-none-eabi-7-2018-q4はバグってるので
http://gcc-arm-none-eabi-7-2018-q2-update-win32.zip
1つ前をダウンロードしとく必要あり。
詳しくは下のサイトに載っています。
https://bugs.launchpad.net/gcc-arm-embedded/+bug/1810274
AtmelStudio開発環境で最初に同梱されているツールチェーンのバージョンが6.3.1だったりする。
古い(枯れた)環境で問題ないけども、最新のバージョンって気になるじゃん?ってことで入れてみた。
https://developer.arm.com/tools-and-software/open-source-software/gnu-toolchain/gnu-rm
上のURLから最新版をダウンロードしてきて、
「C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain」
この辺りのフォルダを差し替えるだけ!
まぁ、簡単で良かったけど、
gcc-arm-none-eabi-7-2018-q4はバグってるので
http://gcc-arm-none-eabi-7-2018-q2-update-win32.zip
1つ前をダウンロードしとく必要あり。
詳しくは下のサイトに載っています。
https://bugs.launchpad.net/gcc-arm-embedded/+bug/1810274
登録:
投稿 (Atom)
