マイクロテクニカ製品サポートFAQ
[一覧] [1つ前に戻る] [マニュアル及び各種ダウンロードページへ]
コンパイル後"Message[306]c\pbp\pbppic14.lib xxx : Crossing page boundary・・・"というエラーメッセージが表示される
PIC18F以外のPIC用の開発をしてコンパイルを行った際、警告として"Message[306]c\pbp\pbppic14.lib xxx : Crossing page boundary・・・"というエラーメッセージが表示される場合があります。

これは、プログラムのRAMの使用領域がバンクをまたがるような配置になった場合に出る警告です。PIC18F以外のPICではバンク構造で複数のバンクにまたがってユーザーエリアが用意されているため、プログラムの内容や長さによっては、1つのバンクにプログラムが入りきらない、又は変数を宣言した時1つのバンク内でのユーザーエリアに収まりきらない際に次のバンクを使用することになります。

この時にこの警告が表示されます。この警告はASMレベルでの警告です。通常は問題にならないことが多いですが、場合によっては変数の参照値がおかしくなったりする場合があります。またレジスタの参照に問題が発生する場合があります。よって、プログラム開発後は念入りにプログラムの動きをチェックする必要があります。

なお、この警告を無視して表示させないようにする方法もあります。MicroCode Studio(Plus)をお使いの場合にはOptionsの設定ダイアログで"Disable code cross boundary ASM warning"にチェックを入れます。

http://www.picbasic.co.uk/forum/attachment.php?attachmentid=2149&stc=1&d=1195872616


なお、PIC18Fシリーズではバンクの概念がないため、この警告が発生することはありません。プログラムが長くなる場合で警告が気になる場合にはPIC18Fシリーズに乗り換えるのも1つの選択肢です。

本件はMPASMが表示しているエラーで、根本的な解決方法はPIC18Fシリーズにデバイスを変更するしか方法はありません。

http://www.geocities.jp/michi_kou/faq.htm#Q27

本問題はPIC16Fシリーズのメモリ構成が複数のバンクにまたがっている仕様に起因する問題であり本質的な解決はデバイスを変更するしか方法がありません。
そのほかの方法としては、プログラム内のRAM使用量を減らすために変数を減らしたり、配列の要素数を減らすなどプログラムの見直しが必要になります。
オリジナル - FAQみたいです - 猫でいいです