特定のメモリアドレス (0x1228A432) でレジスタにバイトを書き込みたい
ただし、このレジスタには次の構造があります。
Bits | Access | Name | Reset | Description |
[31:8] | Read only | -------- | ------ | Reserved |
[7:0] | Read-write | REG[7:0] | 0xXX | ----------- |
予約済みビットに「触れる」ことなく、このレジスタにバイトを書き込む方法を教えてください。
EDIT1: 私のターゲットは Cortex A9 です。256 ビット値 (0xFF など) を使用して、オンボード DDR2 メモリの読み取り/書き込みに成功しました。
EDIT2:私は次の方法でDDR2メモリを使用していました:
// First stage
static unsigned char *p = 0;
char * argv1="0x60000000";
unsigned long address=strtoul(argv1, 0, 0);
p = (unsigned char *) argv1;
// Second stage
char * argv4="FF";
int value=strtol(argv4,0,16);
// Third stage
int offset = 9;
p[offset]=value;
EDIT3:次の情報を見つけました:
すべてのレジスタは 32 ビット幅で、バイト書き込みはサポートしていません。書き込み操作はワード幅である必要があり、予約済みとしてマークされたビットは、読み取り-変更-書き込みを使用して保持する必要があります。