Linux のような重い OS をデバイスに搭載すると、それが提供するハードウェアからの抽象化のレベルにより、チップが何であるかはほとんど無関係になります。特にARMについて何かを学びたい場合、Linuxを使用することはまさにそれを回避する方法です!
さらに、PIC から ARM + Linux へのジャンプは非常に大きなものです。Linux は、4Mb 未満の RAM と、かなり多くの不揮発性ストレージでベッドから出ることはありません。これは最低限のことです。ARM チップは広範囲をカバーしており、ローエンドの部品は Linux をサポートすることさえできません。Linux を価値のあるものにするには、MMU をサポートする ARM パーツが必要です。これには、ARM7 および Cortex-M パーツの広い範囲が含まれていません。
非常に小さなフットプリントで効率的な (そしてハード リアルタイムの) スケジューリングと IPC を実行できる、ARM 用のより小さなオペレーティング システムがたくさんあります。それらは、FreeRTOS などの単純なスケジューリング カーネルから、eCOS などの標準デバイス サポートとネットワーキングを備えたより完全なオペレーティング システムにまで及びます。単純なスケジューラを使用する場合でも、ネットワーク、ファイルシステム、USB などをサポートするために利用できるライブラリがたくさんあります。
コンパイラに関するあなたの質問に対する答えは、ほぼ間違いなく GCC です。これは、Linux が構築されているコンパイラです。カーネル自体をビルドするにはクロスコンパイラが必要ですが、十分なリソースを備えた ARM プラットフォームがあれば、Linux をその上で実行すると、ターゲットはコンパイラをネイティブにホストできます。
私のアドバイスに反して Linux on ARM を本当に使いたいのであれば、それを行うための最も低コストで労力の少ない方法は、おそらく Raspberry Pi を使用することです。これは、箱から出してすぐに Linux を実行できる ARM11 ベースのボードであり、ますます広くサポートされており、900MHz までオーバークロックできます。