added registers to throutle CMAC

This commit is contained in:
2026-06-15 21:11:03 -07:00
parent d620c3a9c0
commit 7c4fbcdf98
4 changed files with 1039 additions and 175 deletions
+831 -153
View File
File diff suppressed because it is too large Load Diff
+201 -18
View File
@@ -160,8 +160,52 @@ namespace uartTestGUI
reg_0x14.Text = ssh_ReadReg("0x80000014");
reg_0x20.Text = ssh_ReadReg("0x80000020");
reg_0x28.Text = ssh_ReadReg("0x80000028");
//
reg_0x28.Text = ssh_ReadReg("0x80000028");
val = (Convert.ToUInt32(reg_0x28.Text, 16));
if (0 == (val & 0x300))
{
dac_data_src_quadsend_rcv.Checked = true;
}
else if (0x100 == (val & 0x300))
{
dac_data_src_cmac.Checked = true;
}
if (1 == (val & 3))
{
cmac_tx_en.Checked = true;
}
else if (2 == (val & 3))
{
cmac_rx_en.Checked = true;
}
else if(3 == (val & 3))
{
cmac_rxtx_en.Checked = true;
}
else
{
cmac_disable.Checked = true;
}
str = ssh_ReadReg("0x80000020"); // dummy register to flag that cmac has been initialized
val = (Convert.ToUInt32(str, 16));
if (0xCAFE == val)
{
// CMAC already init'ed
cmac_init.Text = "CMACs Initialized";
cmac_init.BackColor = Color.LightGreen;
cmac_read_all_regs.PerformClick();
}
else
{
cmac_init.Text = "CMAC_Init";
cmac_init.BackColor = Color.Gainsboro;
}
str = ssh_ReadReg("0x8000002C");
val = (Convert.ToUInt32(str, 16));
reg_0x2C.Text = val.ToString("D");
@@ -212,6 +256,8 @@ namespace uartTestGUI
cmac_0_reg_0x10014.Text = "";
cmac_0_reg_0x10024.Text = "";
cmac_0_reg_0x10090.Text = "";
cmac_4_reg_0x10030.Text = "";
cmac_4_reg_0x10058.Text = "";
cmac_0_reg_0x00.Text = "";
cmac_0_reg_0x04.Text = "";
@@ -228,6 +274,8 @@ namespace uartTestGUI
cmac_0_reg_0x10014.Text = ssh_ReadReg("0x81010014");
cmac_0_reg_0x10024.Text = ssh_ReadReg("0x81010024");
cmac_0_reg_0x10090.Text = ssh_ReadReg("0x81010090");
cmac_0_reg_0x10030.Text = ssh_ReadReg("0x81010030");
cmac_0_reg_0x10058.Text = ssh_ReadReg("0x81010058");
cmac_0_reg_0x00.Text = ssh_ReadReg("0x81000000");
cmac_0_reg_0x04.Text = ssh_ReadReg("0x81000004");
@@ -252,6 +300,8 @@ namespace uartTestGUI
cmac_4_reg_0x10014.Text = "";
cmac_4_reg_0x10024.Text = "";
cmac_4_reg_0x10090.Text = "";
cmac_4_reg_0x10030.Text = "";
cmac_4_reg_0x10058.Text = "";
cmac_4_reg_0x00.Text = "";
cmac_4_reg_0x04.Text = "";
@@ -268,6 +318,8 @@ namespace uartTestGUI
cmac_4_reg_0x10014.Text = ssh_ReadReg("0x82010014");
cmac_4_reg_0x10024.Text = ssh_ReadReg("0x82010024");
cmac_4_reg_0x10090.Text = ssh_ReadReg("0x82010090");
cmac_4_reg_0x10030.Text = ssh_ReadReg("0x81010030");
cmac_4_reg_0x10058.Text = ssh_ReadReg("0x81010058");
cmac_4_reg_0x00.Text = ssh_ReadReg("0x82000000");
cmac_4_reg_0x04.Text = ssh_ReadReg("0x82000004");
@@ -300,9 +352,10 @@ namespace uartTestGUI
// read_all_regs.PerformClick();
// cmac_read_all_regs.PerformClick();
reg_0x00.Text = ssh_ReadReg("0x80000000");
// reg_0x00.Text = ssh_ReadReg("0x80000000");
cmac_0_reg_0x10024.Text = ssh_ReadReg("0x81010024");
cmac_4_reg_0x10024.Text = ssh_ReadReg("0x82010024");
read_all_regs.PerformClick();
ssh_connect.Text = "Connected";
// ssh_client.Disconnect();
@@ -423,18 +476,25 @@ namespace uartTestGUI
cmac_init.Text = "CMACs Initialized";
cmac_init.BackColor = Color.LightGreen;
cmac_read_all_regs.PerformClick();
ssh_WriteReg("0x80000020", "0xCAFE"); // init flag
}
private void cmac_1_Init()
{
cmac_init.Text = "CMAC_1 Initializing...";
// RESET
// RESET - CMAC_1
ssh_WriteReg("0x81010000", "0x1");
cmac_0_reg_0x10000.Text = ssh_ReadReg("0x81010000");
ssh_WriteReg("0x81010000", "0xFFFFFFFF");
cmac_0_reg_0x10000.Text = ssh_ReadReg("0x81010000");
// await Task.Run(() =>
// {
// Sleep 5
Thread.Sleep(5000);
// });
// release RESET - CMAC_1
ssh_WriteReg("0x81010000", "0x0");
cmac_0_reg_0x10000.Text = ssh_ReadReg("0x81010000");
@@ -455,6 +515,17 @@ namespace uartTestGUI
ssh_WriteReg("0x81010090", "0x0");
cmac_0_reg_0x10090.Text = ssh_ReadReg("0x81010090");
// CONFIGURATION_TX_FLOW_CONTROL_CONTROL_REG1
// bits 8:0 - ctl_tx_pause_enable
ssh_WriteReg("0x81010030", "0x00000100");
cmac_0_reg_0x10030.Text = ssh_ReadReg("0x81010030");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x81010058", "0x00000001");
cmac_0_reg_0x10058.Text = ssh_ReadReg("0x81010058");
//#:: Set Destination MAC address
//#:: Broadcast (not multicast, but accepted everywhere): FF:FF:FF:FF:FF:FF
//#:: IPv4 multicast (All-hosts group): 01:00:5E:00:00:01
@@ -472,30 +543,36 @@ namespace uartTestGUI
ssh_WriteReg("0x8100000C", "0x00000200");
cmac_0_reg_0x0C.Text = ssh_ReadReg("0x8100000C");
//#:: Set EtherType
//#:: 0x88B5 IEEE “local/experimental” Ethertype (commonly used for custom payloads)
//#:: 0x0800 IPv4 (often whitelisted by other stacks, even if the payload isnt fully IP)
ssh_WriteReg("0x81000010", "0x000088B5");
cmac_0_reg_0x10.Text = ssh_ReadReg("0x81000010");
// PROG_FULL_ON_THRESH - 0x1C
ssh_WriteReg("0x8100001C", "0x00000100"); //256
cmac_0_reg_0x1C.Text = ssh_ReadReg("0x8100001C");
//PROG_FULL_OFF_THRESH - 0x18
ssh_WriteReg("0x81000018", "0x00000300"); //768
// PROG_FULL_ON_THRESH - 0x18
ssh_WriteReg("0x81000018", "0x00000300"); //256
cmac_0_reg_0x18.Text = ssh_ReadReg("0x81000018");
//PROG_FULL_OFF_THRESH - 0x1C
ssh_WriteReg("0x8100001C", "0x00000100"); //768
cmac_0_reg_0x1C.Text = ssh_ReadReg("0x8100001C");
}
private void cmac_4_Init()
{
cmac_init.Text = "CMAC_4 Initializing...";
// RESET
// RESET - CMAC_4
ssh_WriteReg("0x82010000", "0x1");
cmac_4_reg_0x10090.Text = ssh_ReadReg("0x82010000");
ssh_WriteReg("0x82010000", "0xFFFFFFFF");
cmac_4_reg_0x10000.Text = ssh_ReadReg("0x82010000");
// await Task.Run(() =>
// {
// Sleep 5
Thread.Sleep(5000);
// });
// release RESET - CMAC_4
ssh_WriteReg("0x82010000", "0x0");
cmac_4_reg_0x10000.Text = ssh_ReadReg("0x82010000");
@@ -512,12 +589,23 @@ namespace uartTestGUI
ssh_WriteReg("0x8201000C", "0x1");
cmac_4_reg_0x1000C.Text = ssh_ReadReg("0x8201000C");
//#:: LOOPBACK MODE
//#:: 1=LB, 0=No LB
ssh_WriteReg("0x82010090", "0x0");
cmac_4_reg_0x10090.Text = ssh_ReadReg("0x82010090");
// CONFIGURATION_TX_FLOW_CONTROL_CONTROL_REG1
// bits 8:0 - ctl_tx_pause_enable
ssh_WriteReg("0x82010030", "0x00000100");
cmac_4_reg_0x10030.Text = ssh_ReadReg("0x82010030");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x82010058", "0x00000007");
cmac_4_reg_0x10058.Text = ssh_ReadReg("0x82010058");
//#:: Set Destination MAC address
//#:: Broadcast (not multicast, but accepted everywhere): FF:FF:FF:FF:FF:FF
//#:: IPv4 multicast (All-hosts group): 01:00:5E:00:00:01
@@ -542,12 +630,12 @@ namespace uartTestGUI
ssh_WriteReg("0x82000010", "0x000088B5");
cmac_4_reg_0x10.Text = ssh_ReadReg("0x82000010");
// PROG_FULL_ON_THRESH - 0x1C
ssh_WriteReg("0x8200001C", "0x00000100"); //256
cmac_4_reg_0x1C.Text = ssh_ReadReg("0x82000018");
//PROG_FULL_OFF_THRESH - 0x18
ssh_WriteReg("0x82000018", "0x00000300"); //768
// PROG_FULL_ON_THRESH - 0x18
ssh_WriteReg("0x82000018", "0x00000300"); //256
cmac_4_reg_0x18.Text = ssh_ReadReg("0x82000018");
//PROG_FULL_OFF_THRESH - 0x1C
ssh_WriteReg("0x8200001C", "0x00000100"); //768
cmac_4_reg_0x1C.Text = ssh_ReadReg("0x8200001C");
}
private void reg_read_Click(object sender, EventArgs e)
@@ -577,5 +665,100 @@ namespace uartTestGUI
reg_0x20.Text = ssh_ReadReg("0x80000020");
}
private void cmac_rx_tx_debug_regs_Click(object sender, EventArgs e)
{
if (true == ssh_client.IsConnected)
{
cmac_0_reg_0x40.Text = "";
cmac_0_reg_0x44.Text = "";
cmac_0_reg_0x48.Text = "";
cmac_0_reg_0x4C.Text = "";
cmac_0_reg_0x50.Text = "";
cmac_0_reg_0x54.Text = "";
cmac_0_reg_0x58.Text = "";
cmac_4_reg_0x40.Text = "";
cmac_4_reg_0x44.Text = "";
cmac_4_reg_0x48.Text = "";
cmac_4_reg_0x4C.Text = "";
cmac_4_reg_0x50.Text = "";
cmac_4_reg_0x54.Text = "";
cmac_4_reg_0x58.Text = "";
cmac_0_reg_0x40.Text = ssh_ReadReg("0x81000040");
cmac_0_reg_0x44.Text = ssh_ReadReg("0x81000044");
cmac_0_reg_0x48.Text = ssh_ReadReg("0x81000048");
cmac_0_reg_0x4C.Text = ssh_ReadReg("0x8100004C");
cmac_0_reg_0x50.Text = ssh_ReadReg("0x81000050");
cmac_0_reg_0x54.Text = ssh_ReadReg("0x81000054");
cmac_0_reg_0x58.Text = ssh_ReadReg("0x81000058");
cmac_4_reg_0x40.Text = ssh_ReadReg("0x82000040");
cmac_4_reg_0x44.Text = ssh_ReadReg("0x82000044");
cmac_4_reg_0x48.Text = ssh_ReadReg("0x82000048");
cmac_4_reg_0x4C.Text = ssh_ReadReg("0x8200004C");
cmac_4_reg_0x50.Text = ssh_ReadReg("0x82000050");
cmac_4_reg_0x54.Text = ssh_ReadReg("0x82000054");
cmac_4_reg_0x58.Text = ssh_ReadReg("0x82000058");
}
}
private void cmac2_dac_chan_both_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 &= 0xFFFC_FFFF; // bit17:16 0 <= both
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x81010058", "0x00000001");
cmac_0_reg_0x10058.Text = ssh_ReadReg("0x81010058");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x82010058", "0x00000007");
cmac_4_reg_0x10058.Text = ssh_ReadReg("0x82010058");
}
private void cmac2_dac_chan_1_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 &= 0xFFFC_FFFF; // bit17:16
cntrl_reg28 |= 0x1_0000; // bit17:16 1 <= chan 1
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x81010058", "0x00000007");
cmac_0_reg_0x10058.Text = ssh_ReadReg("0x81010058");
}
private void cmac2_dac_chan_2_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 &= 0xFFFC_FFFF; // bit17:16
cntrl_reg28 |= 0x2_0000; // bit17:16 2 <= chan 2
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x82010058", "0x00000007");
cmac_4_reg_0x10058.Text = ssh_ReadReg("0x82010058");
}
}
}
+3
View File
@@ -123,6 +123,9 @@
<metadata name="label6.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label49.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
+2 -2
View File
@@ -13,7 +13,7 @@
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>C:\erisys\Alinx_Z19_MISC\quadRT_TestGUI\publish\</PublishUrl>
<PublishUrl>C:\erisys\temp\quadrt_cmac_setup\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
@@ -23,7 +23,7 @@
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>1</ApplicationRevision>
<ApplicationRevision>4</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>