Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Refined some more SSP procedures. But, I am finding that complexity is growing beyond my ability to keep it in my head, and am running into limitations when it comes to distinguishing commands intended for the controller or for the units. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
c6e384b2d20fd20c2ddf4b5f68a023d3 |
User & Date: | kc5tja 2019-09-15 23:57:52.925 |
Context
2019-10-27
| ||
00:52 | Re-read doc; identified one code section and one whole sub-section which needs updating to the latest I/O channel model. check-in: cb2c29bfa3 user: kc5tja tags: trunk | |
2019-09-15
| ||
23:57 | Refined some more SSP procedures. But, I am finding that complexity is growing beyond my ability to keep it in my head, and am running into limitations when it comes to distinguishing commands intended for the controller or for the units. check-in: c6e384b2d2 user: kc5tja tags: trunk | |
06:24 | refining some of the storage protocol requirements before my laptop loses power check-in: a6c0c403cb user: kc5tja tags: trunk | |
Changes
Changes to REPORT.org.
︙ | ︙ | |||
922 923 924 925 926 927 928 | In addition, each unit with a medium inserted can potentially have more than one partition as well. We know that partitions can come and go at any time as well, as anyone who has used a partitioning tool like ~fdisk~ can attest. #+BEGIN_SRC TO Discover attached devices and volumes DO | > > | | | | 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 | In addition, each unit with a medium inserted can potentially have more than one partition as well. We know that partitions can come and go at any time as well, as anyone who has used a partitioning tool like ~fdisk~ can attest. #+BEGIN_SRC TO Discover attached devices and volumes DO U Reset the secondary storage interface. O IF secondary storage device not connected THEN RETURN END R Ask storage device for its complete unit list. U IF storage device responded THEN O DO WHILE not at end of unit list U Create a unit descriptor for the unit. O IF unit is mounted THEN U Create a mount-list descriptor. END END U Create device descriptor as device 0. END END #+END_SRC Remark: I chose to build the unit list first, since that allows me to create the device descriptor without having to go back and patch it up later. However, this might not be the best approach. |
︙ | ︙ | |||
970 971 972 973 974 975 976 | When booting, the Kestrel must learn how many storage units are available, which ones have media installed on them, and their physical characteristics. This will provide the required information needed to construct the boot menu. #+BEGIN_SRC | | | 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 | When booting, the Kestrel must learn how many storage units are available, which ones have media installed on them, and their physical characteristics. This will provide the required information needed to construct the boot menu. #+BEGIN_SRC TO Ask storage device for its complete unit list DO R Send command (SSP_LIST_UNITS). O IF timed out or command rejected THEN RETURN END U Receive unit descriptor quantity. O IF timed out THEN RETURN END O FOR each unit pending DO U Process one unit descriptor. END |
︙ | ︙ | |||
1002 1003 1004 1005 1006 1007 1008 | can't get a command through after so many tries, then we give up with a timeout condition. #+BEGIN_SRC TO Send command (x) DO O Begin with the first transmission attempt. O WHILE we have transmission attempts remaining DO | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 | can't get a command through after so many tries, then we give up with a timeout condition. #+BEGIN_SRC TO Send command (x) DO O Begin with the first transmission attempt. O WHILE we have transmission attempts remaining DO U Start interval timer. U Wait for sufficient transmission credits or for timeout. O IF NOT timeout THEN R Send the command bytes for (x). U Restart interval timer. U Wait for command acceptance response or for timeout. O IF NOT timeout THEN O RETURN command acceptance result. END END O Count transmission attempt. END O RETURN timeout. END #+END_SRC Except for the link metadata, every byte we send will reduce our available credit with the attached peripheral. Note that we don't need to worry about flow control during this operation, since we've already established that the receiver has given us enough credit for this operation above. #+BEGIN_SRC TO send the command bytes for (x) DO PRECONDITION: credit >= length(x) O Decrement the credit counter by the length of (x). R Output the COMMAND header for (x) FOR each byte in (x) DO O Send the byte. END POSTCONDITION: credit-length(x) >= 0 END #+END_SRC The command header just consists of two bytes. #+BEGIN_SRC TO output the command header for (x) DO O Output the command frame header byte. O Output the length of (x) in bytes. END #+END_SRC * Data Structures and Variables ** Global Data | Description | Type | |-----------------------------------------------+------------------------------------------------------| | Flag that determines if OK prompt is visible. | BOOLEAN | | Mount list | Pointer to volume descriptor | |
︙ | ︙ | |||
1094 1095 1096 1097 1098 1099 1100 | * Unresolved Issues These are design issues that either need resolution prior to further refinement, or I know how to refine them but just haven't gotten around to it yet. These issues are /in addition/ to all steps which need further refinement. - Refine format of boot block format | > > | 1123 1124 1125 1126 1127 1128 1129 1130 1131 | * Unresolved Issues These are design issues that either need resolution prior to further refinement, or I know how to refine them but just haven't gotten around to it yet. These issues are /in addition/ to all steps which need further refinement. - Refine format of boot block format - Interval timers (needed for SSP driver to detect link timeouts) - How does the SSP driver receive the initial credit? How does the SSP device receive its initial credit? |